все Python 3queueпонятие
queue.PriorityQueue
очереди
Потокобезопасная очередь с приоритетом: get() выдаёт наименьший элемент, обычно кортеж (приоритет, данные).
Синтаксис
q = queue.PriorityQueue(maxsize=0); q.put((priority, data))
Внутри — heapq, поэтому меньшее число означает более высокий приоритет. При равных приоритетах кортежи сравниваются по второму элементу, и если данные несравнимы (словари, свои объекты) — TypeError. Лечится счётчиком: (priority, count, data) или dataclass(order=True) с field(compare=False) у данных.
Примеры
import queue
q = queue.PriorityQueue()
q.put((2, 'low'))
q.put((1, 'high'))
print(q.get()) # → (1, 'high')
import queue
q = queue.PriorityQueue()
q.put((1, {'job': 'a'}))
try:
q.put((1, {'job': 'b'}))
except TypeError as e:
print(type(e).__name__) # → TypeError
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности