How to clear a multiprocessing queue in python
So, I take look at Queue class, and you may to try this code:
while not some_queue.empty():
some_queue.get() # as docs say: Remove and return an item from the queue.
Ask for forgiveness rather than permission; just try to empty the queue until you get the Empty
exception, then ignore that exception:
from Queue import Empty
def clear(q):
try:
while True:
q.get_nowait()
except Empty:
pass
Better yet: is a built-in class missing the method you want? Subclass the built-in class, and add the method you think should be there!
from Queue import Queue, Empty
class ClearableQueue(Queue):
def clear(self):
try:
while True:
self.get_nowait()
except Empty:
pass
Your ClearableQueue
class inherits all the goodness (and behavior) of the built-in Queue
class, and has the method you now want.
Simply use q = ClearableQueue()
in all places where you used q = Queue()
, and call q.clear()
when you'd like.