同步于进程之间
在不同的子进程之间同步信息并不轻松,这是由于不同进程的print
函数会相互干扰。此包就是为了解决这个问题而设计的。若用户的需求是、在同一程序的不同子进程之间捕获标准输出,则建议使用LineProcBuffer
。
下例捕获了来自四个不同进程的信息:
sync-proc.py
import multiprocessing
import syncstream
def worker_process(buffer: syncstream.LineProcMirror):
'''定义workder_process。'''
with buffer:
print('Message', 'item')
if __name__ == '__main__':
pbuf = syncstream.LineProcBuffer(10) # 初始化。
with multiprocessing.Pool(4) as pool:
pool.map_async(
worker_process,
tuple(pbuf.mirror for _ in range(4))
) # 运行四个进程。
pbuf.wait() # 等待终结信号。
messages = pbuf.read() # 获得结果。
for mitem in messages:
print(mitem)