我的要求类似于Multiple producers, single consumer
除了我需要在python中

我创建了一个生成5个并发进程的应用程序(我正在使用多处理库)。这5个进程以dict格式独立生成输出。

之前我将输出打印到控制台,但现在想将其输出到文件。

我正在寻找一种模式,其中所有5个生产者都写入支持并发写入的共享队列。

而且,单个使用者进程也可以访问此队列并使用该队列中的数据,并具有在没有数据写入时等待并在生产者完成其任务时终止的能力。

谢谢阿努伊

最佳答案

因为您已经在使用多进程,所以您只需要Queue类

和一个示例(从Queue文档中修改)

from multiprocessing import Process, Queue

def child(q, url):
    result = my_process(url)
    q.put(result)

if __name__ == '__main__':
    q = Queue()
    urls = [...]
    children = []
    for url in urls:
       p = Process(target=child, args=(q,url))
       p.start()
       children.append(p)
    for p in children:
       p.join()
       print q.get() #or write to file (might not be the answer from this child)


编辑:
对于每个孩子的多个答案,请将last for循环替换为:

while 0 != multiprocessing.active_children():
    print q.get()

关于python - 生产者/消费者多生产者和一个消费者编写File Python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7266210/

10-11 23:09
查看更多