gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:34:40 26 4
gpt4 key购买 nike

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

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))

关于python - 在多个进程之间共享一个结果队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9908781/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com