2011-03-31 125 views
5

我正在用一组我希望并行运行的作业填充一个队列,并使用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'] 

为什么队列没有得到填充所有的工作?

回答

13

该队列实际上是填充填充。每次将对象放入队列时,都需要调用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'] 
+0

啊..我现在明白了..谢谢!!! – 2011-03-31 21:10:06

+0

不客气。 – 2011-03-31 21:11:48

12

该队列正在填充您的所有工作。 queue.get()

删除,并从 返回队列项目

一个项目是单数。如果您想排空队列,那么只需将.get()置于循环中,但一定要注意Empty例外。

+3

为什么这会降低投票率?我很困惑.. – 2012-07-10 22:17:29