pool.map()配合manager.Queue()的示例
时间: 2023-07-22 18:05:18 浏览: 120
C语言头文件 QUEUE.H
5星 · 资源好评率100%
下面是一个使用`pool.map()`和`manager.Queue()`的示例,其中`pool.map()`用于并行执行函数,而`manager.Queue()`用于在进程之间共享数据。
```python
import multiprocessing as mp
def worker(queue, item):
result = item * item
queue.put(result)
if __name__ == '__main__':
with mp.Manager() as manager:
# 创建共享队列
queue = manager.Queue()
# 创建进程池
pool = mp.Pool(processes=4)
# 要处理的数据
data = [1, 2, 3, 4, 5]
# 将任务提交到进程池
pool.map(worker, [(queue, item) for item in data])
# 从队列中获取结果
results = []
while not queue.empty():
results.append(queue.get())
print(results)
```
在上面的示例中,我们首先创建了一个共享队列`queue`,然后创建了一个进程池`pool`,并使用`pool.map()`函数将`worker`函数应用于要处理的数据`data`。`worker`函数获取一个共享的队列和一个数据项,将数据项的平方计算出来,并将结果放入队列中。
在主进程中,我们使用一个循环从队列中获取结果,直到队列为空。最后,我们将所有的结果打印出来。由于使用了进程池,这些任务可以并行执行,因此这个程序的运行速度应该比逐个处理任务要快得多。
阅读全文