写一段python代码多进程并行用队列获取返回值
时间: 2024-03-21 19:38:34 浏览: 58
下面是一个使用 Python 多进程并行处理,并通过队列获取返回值的示例代码:
```python
import multiprocessing
import queue
def worker(num, q):
"""子进程要执行的任务"""
result = num * 2
q.put(result) # 将结果放入队列中
if __name__ == '__main__':
# 创建队列和进程池
q = multiprocessing.Queue()
pool = multiprocessing.Pool()
# 提交任务到进程池中
for i in range(10):
pool.apply_async(worker, args=(i, q))
# 关闭进程池,等待任务完成
pool.close()
pool.join()
# 从队列中获取结果
results = []
while not q.empty():
result = q.get()
results.append(result)
# 打印结果
print(results)
```
这段代码中,我们首先创建了一个队列 `q` 和一个进程池 `pool`。然后,我们通过 `pool.apply_async()` 方法提交了 10 个任务到进程池中,并将它们的返回值放入队列中。接着,我们关闭进程池并等待任务完成。最后,我们从队列中获取所有的结果,并将它们放入一个列表中,最终打印出这个列表。
需要注意的是,在 Python 中,队列对象不能被序列化,因此我们不能将它直接传递给子进程。在这里,我们将队列对象作为参数传递给子进程,让子进程将结果放入队列中。这样,主进程就可以通过队列来获取所有子进程的返回值了。
阅读全文