python多进程打印输出_多进程的日志输出

Is there a way to log the stdout output from a given Process when using the multiprocessing.Process class in python?

解决方案

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()

And running it:

$ 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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值