Skip to main content
 首页 » 编程设计

python之Producer/Consumer 多个生产者和单个消费者写入文件 Python

2025年05月04日16bjzhanghao

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