我只是想知道如何清除多队列蟒蛇像一个正常的Python队列。 例如:
from multiprocessing import Queue # multiprocessing queue
from Queue import Queue # normal queue
multi_q = Queue()
normal_q = Queue()
multi_q.clear() # or multi_q.queue.clear()
“队列”对象没有属性“清晰的”
normal_q.queue.clear() # This is ok
有清除的没有直接的方法multiprocessing.Queue
。
我相信你有最近的是close()
,但只是说,没有更多的数据将被推到队列中,将关闭它,当所有数据已刷新到管道。
所以,我拿一下Queue类,你可以试试下面的代码:
while not some_queue.empty():
some_queue.get() # as docs say: Remove and return an item from the queue.
请求原谅,而不是许可; 只是尝试清空队列,直到你得到的Empty
异常,则忽略该异常:
from Queue import Empty
def clear(q):
try:
while True:
q.get_nowait()
except Empty:
pass
更妙的是:是一个内置类缺少需要的方法? 子类中的内置类,并添加您认为应该有方法!
from Queue import Queue, Empty
class ClearableQueue(Queue):
def clear(self):
try:
while True:
self.get_nowait()
except Empty:
pass
你ClearableQueue
类继承的内置的所有善良(和行为) Queue
类,并有你现在想的方法。
只需使用q = ClearableQueue()
在你使用的所有地方q = Queue()
并调用q.clear()
当你想。