python – 在多个进程之间共享结果队列

多进程模块的文档说明如何将队列传递给以multiprocessing.Process开始的进程。但是如何使用apply_async启动的异步工作进程共享队列?我不需要动态加入或任何其他东西,只是一种方式让工人(反复)报告他们的结果回到基地。

import multiprocessing
def worker(name, que):
    que.put("%d is done" % name)

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=3)
    q = multiprocessing.Queue()
    workers = pool.apply_async(worker, (33, q))

此操作失败:
    RuntimeError:队列对象应该只通过继承在进程之间共享。
我明白这是什么意思,我明白继承的建议,而不是需要酸洗/取消(和所有特殊的Windows限制)。但是如何以一种有效的方式传递队列?我找不到一个例子,我试过了几种方法失败的方式。请帮助?

尝试使用multiprocessing.Manager来管理队列,并让不同的工作者可以访问它。

import multiprocessing
def worker(name, que):
    que.put("%d is done" % name)

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=3)
    m = multiprocessing.Manager()
    q = m.Queue()
    workers = pool.apply_async(worker, (33, q))
http://stackoverflow.com/questions/9908781/sharing-a-result-queue-among-several-processes

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:python – 在多个进程之间共享结果队列