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.