在多处理中,父子进程之间共享队列对于通信和结果检索至关重要。然而,使用 apply_async 启动异步工作进程在共享队列方面提出了挑战。
为了克服“队列对象只能通过继承在进程之间共享”错误,我们可以利用 multiprocessing.Manager。该管理器类可以创建和管理共享资源,包括队列。
通过将队列创建包含在 multiprocessing.Manager() 上下文中,我们可以使其可供所有工作人员访问。这是修改代码的方法:
<code class="python">if __name__ == '__main__': pool = multiprocessing.Pool(processes=3) m = multiprocessing.Manager() q = m.Queue() workers = pool.apply_async(worker, (33, q))</code>
现在,每个工作人员都可以与共享 q 对象交互并将结果报告回基本进程。这种方法允许高效可靠的结果通信,同时保持 apply_async 的异步性质。
以上是如何使用 multiprocessing.Manager 在多个进程之间共享结果队列?的详细内容。更多信息请关注PHP中文网其他相关文章!