python队列在进程传递_如何通过队列传递子进程stdout?Python

一种解决方案是使用logging模块。

记录器在multiprocessing.util中是可争议的,可用于生成线程安全日志:import time

import logging

import multiprocessing as mp

import multiprocessing.util as util

from sys import stdout as out

def runner(ids):

log = util.get_logger()

for i in range(10):

time.sleep(.5)

log.log(25, 'Process {} logging {}'.format(ids, i))

if __name__ == '__main__':

# Setup the logger

log = util.get_logger()

log.getEffectiveLevel()

# You can setup a file instead of stdout in the StreamHandler

ch = logging.StreamHandler(out)

ch.setLevel(25)

ch.setFormatter(logging.Formatter('%(processName)s - %(message)s'))

log.addHandler(ch)

log.setLevel(25)

p1 = mp.Process(target=runner, args=(1,), name="Process1")

p2 = mp.Process(target=runner, args=(2,), name="Process2")

p1.start()

p2.start()

time.sleep(2)

log.log(25, 'Some main process logging meanwhile')

p1.join()

>20级允许避免从启动和停止进程中获取日志。

如果参数out是打开的可写文件,则处理程序可以直接登录文件。

这避免了必须自己处理日志队列。{a1}还有很多高级功能。在

使用multiprocessing模块中的记录器获取线程安全日志非常重要。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值