【发布时间】:2018-06-06 17:19:59
【问题描述】:
有人告诉我,日志记录不能在多处理中使用。你必须做并发控制,以防多处理弄乱日志。
但我做了一些测试,在多处理中使用登录似乎没有问题
import time
import logging
from multiprocessing import Process, current_process, pool
# setup log
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename='/tmp/test.log',
filemode='w')
def func(the_time, logger):
proc = current_process()
while True:
if time.time() >= the_time:
logger.info('proc name %s id %s' % (proc.name, proc.pid))
return
if __name__ == '__main__':
the_time = time.time() + 5
for x in xrange(1, 10):
proc = Process(target=func, name=x, args=(the_time, logger))
proc.start()
从代码中可以看出。
我故意让子进程在同一时刻(启动后5s)写日志,以增加冲突的机会。但是完全没有冲突。
所以我的问题是我们可以在多处理中使用日志记录吗? 为什么这么多帖子说我们不能?
【问题讨论】:
标签: python python-multiprocessing