如何在不删除的情况下提取多处理队列元素

时间:2019-04-17 06:36:48

标签: python queue multiprocessing autoproxy

由于自动代理错误,我无法提取多处理队列的元素。

提取队列元素而不删除的通常方法是-list(q.queue)其中q->队列对象。 似乎不适用于MP队列。

import multiprocessing as mp

q = mp.Manager().Queue(maxsize=20)

list(q)
TypeError: 'AutoProxy[Queue]' object is not iterable
list(q.queue)
AttributeError: 'AutoProxy[Queue]' object has no attribute 'queue'
list(q.queue.queue)
AttributeError: 'AutoProxy[Queue]' object has no attribute 'queue'

当我使用时也会发生同样的事情:

q = mp.Queue(maxsize=20)

我希望能够不执行q.get()而提取队列元素,并希望继续使用共享队列,因为它被多个进程使用。

1 个答案:

答案 0 :(得分:0)

用于多处理的队列。

q = Queue()
q.put(2)
q.put(4)

elements = list()
while q.qsize():
    elements.append(q.get())
print(elements)