python多进程并发用队列传结果
时间: 2023-07-24 07:38:41 浏览: 56
在 Python 中,多进程并发可以使用 `multiprocessing` 模块实现。而队列则可以用于在进程之间传递数据和结果。
下面是一个使用队列传递结果的示例代码:
```python
import multiprocessing
def worker(num, q):
"""子进程要执行的任务"""
result = num * 2
q.put(result) # 将结果放入队列中
if __name__ == '__main__':
# 创建队列和进程池
q = multiprocessing.Queue()
pool = multiprocessing.Pool()
# 提交任务到进程池中
for i in range(5):
pool.apply_async(worker, args=(i, q))
# 关闭进程池
pool.close()
# 等待所有进程完成任务
pool.join()
# 从队列中获取结果
results = []
while not q.empty():
results.append(q.get())
# 输出结果
print(results)
```
在这个示例中,首先创建了一个队列 `q` 和一个进程池 `pool`。然后,使用 `apply_async()` 方法向进程池提交任务,每个任务都会调用 `worker()` 函数,将计算结果放入队列中。在提交完所有任务后,关闭进程池并等待所有进程完成任务。最后,从队列中获取结果并输出。