Python 多进程队列
我正在用一组我想要并行运行的任务来填充一个队列,并且使用Python的多进程模块来实现这个功能。下面是代码片段:
import multiprocessing
from multiprocessing import Queue
queue = Queue()
jobs = [['a', 'b'], ['c', 'd']]
for job in jobs:
queue.put(job)
当我执行queue.get()时,我得到了以下内容:
['a', 'b']
为什么队列没有填满所有的任务呢?
2 个回答
12
队列里正在添加你的所有任务。使用 queue.get() 方法可以
从队列中移除并返回一个项目。
这里的“一个项目”是指单个的任务。如果你想把队列里的所有任务都处理完,可以把 .get()
放在一个循环里,但一定要注意捕捉 空队列 的异常情况。
15
队列实际上是有在添加数据的。每次你把一个对象放入队列时,都需要调用一次 queue.get()。所以你只需要再调用一次 queue.get() 就可以了。
>>> import multiprocessing
>>> from multiprocessing import Queue
>>> queue = Queue()
>>> jobs = [['a', 'b'], ['c', 'd']]
>>> for job in jobs:
queue.put(job)
>>> queue.get()
['a', 'b']
>>> queue.get()
['c', 'd']