Python:清除PriorityQueue中的项

Python:清除PriorityQueue中的项,python,python-2.7,priority-queue,Python,Python 2.7,Priority Queue,我读了上面的答案 我正在使用Python2.7 import Queue pq = Queue.PriorityQueue() pq.clear() 我得到以下错误: AttributeError: PriorityQueue instance has no attribute 'clear' 有没有办法轻松清空优先级队列,而不是手动弹出所有项目?或者会重新实例化工作(即不会弄乱join())?它实际上是pq.queue.clear()。但是,正如您提到的问题的答案中所述,这没有记录在案,并

我读了上面的答案

我正在使用Python2.7

import Queue
pq = Queue.PriorityQueue()
pq.clear()
我得到以下错误:

AttributeError: PriorityQueue instance has no attribute 'clear'

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

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

最干净的方式如所述:


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

链接的答案建议使用
pg.queue.clear()
pq.queue.clear()AttributeError:“list”对象没有属性“clear”@Evert still error
。queue
是为
queue()
未记录的,因此我怀疑这有点像黑客,而且(显然)不可靠。查看克里斯托夫的答案。您确定需要使用
队列
模块吗?它不是通用数据结构,而是专门用于线程之间的同步通信。如果您不需要同步,只需要一个通用的后进先出队列,请使用
collections.deque
。对于非同步优先级队列,请使用
列表和
heapq
模块中的函数。
while not q.empty():
    try:
        q.get(False)
    except Empty:
        continue
    q.task_done()