几个multiprocessing.apply_async处理几百个multiprocessing.Manager.Queue()对象的示例
时间: 2023-12-20 09:06:34 浏览: 149
实例讲述多线程的处理机制
这里是一个示例,使用了4个进程处理100个队列对象:
```python
import multiprocessing
def worker(q):
while not q.empty():
item = q.get()
# 处理队列中的item
print(item)
if __name__ == '__main__':
# 创建队列
queues = [multiprocessing.Manager().Queue() for _ in range(100)]
# 创建进程池
pool = multiprocessing.Pool(processes=4)
# 使用apply_async启动进程
for q in queues:
pool.apply_async(worker, args=(q,))
# 关闭进程池
pool.close()
pool.join()
```
在这个示例中,我们传递了一个`multiprocessing.Manager().Queue()`队列对象到每个工作进程中,然后在`worker`函数中处理队列中的每个项目。我们使用`apply_async`方法启动每个进程,并将队列对象作为参数传递。最后,我们关闭进程池并等待所有进程完成。
阅读全文