本文介绍了多进程的日志输出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在python中使用multiprocessing.Process类时,是否有方法可以记录给定进程的stdout输出?
Is there a way to log the stdout output from a given Process when using the multiprocessing.Process class in python?
推荐答案
最简单的方法可能是重写 sys.stdout
。稍微修改示例:
The easiest way might be to just override sys.stdout
. Slightly modifying an example from the multiprocessing manual:
from multiprocessing import Process
import os
import sys
def info(title):
print title
print 'module name:', __name__
print 'parent process:', os.getppid()
print 'process id:', os.getpid()
def f(name):
sys.stdout = open(str(os.getpid()) + ".out", "w")
info('function f')
print 'hello', name
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
q = Process(target=f, args=('fred',))
q.start()
p.join()
q.join()
并运行它:
$ ls
m.py
$ python m.py
$ ls
27493.out 27494.out m.py
$ cat 27493.out
function f
module name: __main__
parent process: 27492
process id: 27493
hello bob
$ cat 27494.out
function f
module name: __main__
parent process: 27492
process id: 27494
hello fred
这篇关于多进程的日志输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!