在多处理中,父子进程之间共享队列对于通信和结果检索至关重要。然而,使用 apply_async 启动异步工作进程在共享队列方面提出了挑战。
为了克服“队列对象只能通过继承在进程之间共享”错误,我们可以利用 multiprocessing.Manager。这个管理器类可以创建和管理共享资源,包括队列。
通过将队列创建包含在 multiprocessing.Manager() 上下文中,我们可以使其可供所有工作人员访问。修改代码如下:
if __name__ == '__main__':
pool = multiprocessing.Pool(processes=3)
m = multiprocessing.Manager()
q = m.Queue()
workers = pool.apply_async(worker, (33, q))
现在,每个worker都可以与共享q对象交互并将结果报告回基本进程。这种方法允许高效可靠的结果通信,同时保持 apply_async 的异步性质。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3