Can I get an item from a PriorityQueue without removing it yet?

Jiew Meng picture Jiew Meng · Feb 15, 2012 · Viewed 53.6k times · Source

I want to get the next item in queue but I don't want to dequeue it. Is it possible in Python's queue.PriorityQueue? From the docs, I don't see how can it be done

Answer

HYRY picture HYRY · Feb 15, 2012

If a is a PriorityQueue object, You can use a.queue[0] to get the next item:

from Queue import PriorityQueue

a = PriorityQueue()

a.put((10, "a"))
a.put((4, "b"))
a.put((3,"c"))

print a.queue
print a.get()
print a.queue
print a.get()
print a.queue

output is :

[(3, 'c'), (10, 'a'), (4, 'b')]
(3, 'c')
[(4, 'b'), (10, 'a')]
(4, 'b')
[(10, 'a')]

but be careful about multi thread access.