我的要求类似于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/