由于自动代理错误,我无法提取多处理队列的元素。
提取队列元素而不删除的正常方法是 - 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(( 的情况下提取队列元素,并希望继续使用共享队列,因为它被多个进程使用。
表示多处理的队列。
q = Queue()
q.put(2)
q.put(4)
elements = list()
while q.qsize():
elements.append(q.get())
print(elements)