Я новичок в использовании очередей в Python и недавно начал работать с PriorityQueue.
Я ожидал, что элементы будут вставлены в очередь в соответствии с номером приоритета.То есть, если бы я сделал что-то вроде:
from Queue import PriorityQueue
q = PriorityQueue()
q.put((1, '1'))
q.put((4, 'last'))
q.put((2, '2'))
q.put((3, '3'))
print q.queue
Я ожидал такой вывод:
[(1, '1'), (2, '2'), (3, '3'), (4, 'last')].
Вместо этого я получаю:
[(1, '1'), (3, '3'), (2, '2'), (4, 'last')]
Однако, если яполучить элементы из очереди следующим образом:
while not q.empty():
item = q.get()
print item
Я получаю вывод, который ожидал:
(1, '1')
(2, '2')
(3, '3')
(4, 'last')
Я пытался что-то отладить, печатая очередь в каком-тоуказывает и заметил, что элементы были не в том порядке, в котором я ожидал.Если я не пропустил это, в документах Queue ничего не говорится о сортировке.Я был просто неправ, ожидая, что это будет отсортировано?Может ли это быть просто не реализовано таким образом из соображений эффективности?