I just want to know how to clear a multiprocessing queue in python like a normal python queue. For instance:
from multiprocessing import Queue # multiproces
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.