简体   繁体   English

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

[英]How to extract multiprocessing queue elements without removing

I'm not able to extract a multiprocessing queue's elements due to AutoProxy error.由于 AutoProxy 错误,我无法提取多处理队列的元素。

Normal way extracting queue's elements without removing is to do - list(q.queue) where q-> queue object.提取队列元素而不删除的正常方法是 - list(q.queue) where q-> queue object。 Doesn't seem to work for MP queue.似乎不适用于 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'

The same happens when I use:当我使用时也会发生同样的情况:

q = mp.Queue(maxsize=20)

I want to be able to extract queue elements without doing a q.get() and want to continue to use a shared queue as it's used by multiple processes.我希望能够在不执行 q.get() 的情况下提取队列元素,并希望继续使用共享队列,因为它被多个进程使用。

for multiprocessing's Queue..对于多处理的队列..

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM