На этом шаге мы рассмотрим использование этого класса для создания очередей с приоритетом.
Данная реализация очереди с приоритетом во внутреннем представлении использует двоичную кучу heapq и имеет одинаковую временную и пространственную вычислительную сложность.
См. документацию Python "queue.PriorityQueue": https://docs.python.org/3.6/library/queue.html.
Разница состоит в том, что очередь с приоритетом PriorityQueue синхронизирована и обеспечивает семантику блокирования с целью поддержки многочисленных параллельных производителей и потребителей.
В зависимости от вашего варианта использования она либо станет полезной, либо слегка замедлит вашу программу. В любом случае вы можете предпочесть интерфейс на основе класса, предлагаемый классом PriorityQueue, использованию интерфейса на основе функций, предлагаемого модулем heapq.
>>> from queue import PriorityQueue >>> q = PriorityQueue() >>> q.put((2, 'программировать')) >>> q.put((1, 'есть')) >>> q.put((3, 'спать')) >>> while not q.empty(): next_item = q.get() print(next_item) # Результат: (1, 'есть') (2, 'программировать') (3, 'спать')
На следующем шаге мы подитожим изученный материал.