Python 多进程队列

5 投票
2 回答
10953 浏览
提问于 2025-04-16 14:51

我正在用一组我想要并行运行的任务来填充一个队列,并且使用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']

撰写回答