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
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.
There is no direct way of clearing a multiprocessing.Queue.
I believe the closest you have is close(), but that simply states that no more data will be pushed to that queue, and will close it when all data has been flushed to the pipe.