展开全部

因为logging是threadsafe的,但不是process-safe(应该没有这个词儿,只是为了便于理解)的。这段代码就是多个进程共同操e69da5e6ba903231313335323631343130323136353331333335333038作一个日志文件。这种情况下,logging的行为就很难说了。

我测试了一下,日志中大概几百行。而且,可以看到一些顺序错乱现象:

Fri, 08 Aug 2014 01:19:38 logging_in_multithread.py[line:40] theadWorking ERROR 2

FFri, 08 Aug 2014 01:19:36 logging_in_multithread.py[line:40] theadWorking ERROR 11(注意这里的FFri)

把代码这样改:for num in range(processNum):

p = Process(target=processWorking, args=('2',))

processs.append(p)

p.start()

p.join()

还有其他方法,比如:为logging实现一个FileHandler,以使logging在multiple process的环境下也能正常工作。这是我从网上了解到的做法,自己还没实践过。

Python Manual中logging Cookbook中有这么一段话:

Logging to a single file from multiple processes

Although logging is thread-safe, and logging to a single file from multiple threads in a single process is supported, logging to a single file from multiple processes is not supported, because there is no standard way to serialize access to a single file across multiple processes in Python. If you need to log to a single file from multiple processes, one way of doing this is to have all the processes log to a SocketHandler, and have a separate process which implements a socket server which reads from the socket and logs to file. (If you prefer, you can dedicate one thread in one of the existing processes to perform this function.)

这段话中也提出了另外一种解决方案。

python多线程写日志_python 多线程logger问题相关推荐

  1. python多线程写日志_python 应用logging多线程写多个log文件

    python 使用logging多线程写多个log文件 import threading import time import logging import logging.handlers LEVE ...

  2. linux 多线程 写日志,rsyslog多线程远程日志记录介绍(lamp+rsyslog)

    rsyslog多线程远程日志记录介绍(lamp+rsyslog) rsyslog: rsyslog: 多线程: 支持UDP, TCP, SSL, TLS, RELP远程日志记录 rsyslog支持将日 ...

  3. python多线程怎么写日志_Python日志记录在多进程下的使用

    1. 问题描述 项目中,使用RotatingFileHandler根据日志文件大小来切分日志.设置文件的MaxBytes为1GB, backupCount大小为5. 经查看,发现日志文件的大小均小于1 ...

  4. python web框架 多线程和多进程_python 多线程和多进程

    多线程与多进程 知识预览 一 进程与线程的概念 二 threading模块 三 multiprocessing模块 四 协程 五 IO模型 回到顶部 一 进程与线程的概念 1.1 进程 考虑一个场景: ...

  5. python多核多线程编程实例_Python多线程

    多线程基础概念 并行与并发并行:同时处理多个任务,必须在多核环境下 一段时间内同时处理多个任务,单核也可以并发 并发手段线程:内核空间的调度 进程:内核空间的调度 协程:用户空间的调度 线程可以允许程 ...

  6. python实用程序育儿法_Python多线程 简明例子

    Python多线程 简明例子 (2010-03-11 15:15:09) Python多线程 简明例子 综述 多线程是程序设计中的一个重要方面,尤其是在服务器Deamon程序方面.无论何种系统,线程调 ...

  7. python真正实现多线程的方法_python多线程几种方法实现

    匿名用户 1级 2018-05-27 回答 Python进阶(二十六)-多线程实现同步的四种方式 临界资源即那些一次只能被一个线程访问的资源,典型例子就是打印机,它一次只能被一个程序用来执行打印功能, ...

  8. python多线程的作用_Python多线程中三个函数的强大功能简介

    在Python多线程中有三个比较简单的函数,在实际的相关操作中你对这一实际操作是否了解?是否对其感兴趣?如果你想对Python多线程的开发与多线程程序及相关实际操作方案有所了解的话,你就可以点击以下的 ...

  9. python多线程共享全局变量_Python多线程-共享全局变量

    多线程-共享全局变量 import threading import time g_num = 200 def test1(): global g_num for i in range(5): g_n ...

最新文章

  1. python之堆heapq模块
  2. 基因测序、生物信息分析平台工作站硬件配置推荐2020
  3. AI时代,摄影艺术即将消失?
  4. Shell分析HardSoft-Viewer结果文件并插入数据库
  5. Quartz.net持久化与集群部署开发详解
  6. Android使用Intent启动Service的Intent必须是显式的
  7. MAC解决连接服务器,一段时间不操作导致断开连接,卡顿一段时间的问题。
  8. 总结的比较好的vim命令
  9. 吐槽net下没有靠谱的FastDFS的sdk之使用thrift实现JAVA和C#互通
  10. 浅谈Scala 2.8的包对象(package object)
  11. Android 7.0 SEAndroid app权限配置
  12. [转载]C# Socket编程 同步以及异步通信
  13. 第三十 访问财富进退自如 —Spring交易管理
  14. 9 内存模型和名称空间
  15. 在网页博客文章中输入上下角标(指次幂、下角标)、分数及特殊字符
  16. cad2012打开后闪退_win10系统打开CAd2012出现闪退的恢复方法
  17. mysql1682错误_ERROR 1682 (HY000)
  18. 操作系统笔试面试基本内容
  19. 高效缓冲区输入输出流
  20. SQL语句中的USING用法

热门文章

  1. mysql创建触发器的权限_MYSQL设置触发器权限问题的解决方法
  2. 风吹来_“秃如其来”的年轻人,如何才能让头发“春风吹又生”?
  3. moreclipboard能记录多个粘贴内容的eclipse粘贴板插件
  4. dtc mysql_DTCC归来-高可用可扩展数据库架构探讨
  5. mysql55条_mysql学习笔记一
  6. 充电器红灯_电动车充电3-4个小时充电器转绿灯正常吗?
  7. 电脑有线网络和无线网络共用
  8. LINUX 下 RABBITMQ安装与配置
  9. redis-对象的存储-JSON
  10. 设置element-iu中table滚动条位置