Python 多进程通信如何合理的使用管道?

伪代码如下:

cons_p1 = multiprocessing.Process(target=consumer,args=((output_p,input_p),1))
cons_p1.start()
cons_p2 = multiprocessing.Process(target=consumer,args=((output_p,input_p),1))
cons_p2.start()

以上2个消费者分别在两个进程中执行,等待 数据:

while True:
    try:
        item = output_p.recv()     # 等待数据
    except EOFError:
        break
    print("%s消费:%s" % (id,item)) 
    

生产者再主进程 生产数据,并发送给管道:

input_p.send(item)

问题: 目前程序运行结果,如果消费的速度慢一些,两个进程可以正常从管道获得数据。逐一消费。
如果消费速度快了。则某个进程 会 EOFError 退出。

请问如何能在多进程程序中,合理的共用管道?或者正确的姿势是什么呢?

阅读 5.1k
1 个回答

你这样做不妥吧,一般只能是一个进程写,一个进程读。而你是一个写,两个读。狼多肉少啊老哥。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题