【发布时间】:2012-04-12 02:53:11
【问题描述】:
multiprocessing 模块的文档展示了如何将队列传递给以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: Queue objects should only be shared between processes through inheritance。
我理解这意味着什么,并且我理解继承而不是要求酸洗/解酸(以及所有特殊的 Windows 限制)的建议。但是如何我如何以一种有效的方式传递队列?我找不到一个例子,我尝试了几种以各种方式失败的替代方案。请帮忙?
【问题讨论】:
标签: python parallel-processing queue multiprocessing python-multiprocessing