我的要求类似于Multiple producers, single consumer 除了我在 python 中需要它
我创建了一个产生 5 个并发进程的应用程序(我正在使用多处理库)。这 5 个进程独立地生成 dict 格式的输出。
之前我将输出打印到控制台,但现在想将它输出到文件。
我正在寻找一种模式,我的所有 5 个生产者都写入一个支持并发写入的共享队列。
单个消费者进程也可以访问此队列并使用其中的数据,如果没有数据可写则可以等待,并在生产者完成任务后终止。
谢谢阿努杰
请您参考如下方法:
因为您已经在使用多进程,所以您只需要 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)
编辑: 对于每个 child 的多个答案,将最后一个 for 循环替换为:
while 0 != multiprocessing.active_children():
print q.get()
