2016-07-25 3 views
0

Clear all items from the queuePython: четкие элементы из PriorityQueue

Я прочитал ответ выше

Im используя Python 2.7

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

Я получаю следующее сообщение об ошибке:

AttributeError: PriorityQueue instance has no attribute 'clear' 

Есть ли способ легко освободить очередь приоритетов вместо того, чтобы вручную выталкивать все элементы? или будет реинверсифицировать работу (т. е. она не будет конфликтовать с join())?

+0

Связанный ответ предлагает использовать 'pg.queue.clear()'. – Evert

+0

pq.queue.clear() AttributeError: объект 'list' не имеет атрибута 'clear' – ealeon

+0

@Evert still error – ealeon

ответ

1

Это фактически pq.queue.clear(). Однако, как упоминалось в ответах на указанный вами вопрос, это не документировано и потенциально небезопасно.

Чистейшая способ описан в this answer:

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

Re-инстанцировании очередь будет работать тоже, конечно, объект (объект будет просто удалить из памяти), не так долго, как никакая другая часть кода выполняется на ссылку на старую очередь.

Смежные вопросы