Как извлечь элементы многопроцессорной очереди без удаления

Я не могу извлечь элементы многопроцессорной очереди из-за ошибки AutoProxy.

Обычный способ извлечения элементов очереди без удаления - это список дел (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() и хочу продолжать использовать общую очередь, так как она используется несколькими процессами.

0 ответов

Для очереди многопроцессорности..

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

elements = list()
while q.qsize():
    elements.append(q.get())
print(elements)
Другие вопросы по тегам