How to extract multiprocessing queue elements without removing

4.9k Views Asked by At

I'm not able to extract a multiprocessing queue's elements due to AutoProxy error.

Normal way extracting queue's elements without removing is to do - list(q.queue) where q-> queue object. Doesn't seem to work for MP queue.

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.

1

There are 1 best solutions below

2
On

for multiprocessing's Queue..

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

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