Python:清除PriorityQueue中的项目

时间:2016-07-25 06:09:06

标签: python python-2.7 priority-queue

Clear all items from the queue

我读了上面的答案

我正在使用python 2.7

import Queue
pq = Queue.PriorityQueue()
pq.clear()

我收到以下错误:

AttributeError: PriorityQueue instance has no attribute 'clear'

有没有办法轻松清空优先级队列而不是手动弹出所有项目?或者会重新实例化工作(即它不会搞乱join())?

1 个答案:

答案 0 :(得分:1)

实际上pq.queue.clear()。但是,正如您引用的问题的答案中所提到的,这没有记录,可能不安全。

最简洁的方法在this answer中描述:

while not q.empty():
    try:
        q.get(False)
    except Empty:
        continue
    q.task_done()

重新实例化队列当然也会起作用(该对象很容易从内存中删除),只要代码的其他部分不保留对旧队列的引用。