Просто используйте второй элемент кортежа в качестве вторичного приоритета, если алфавитно-цифровая сортировка ваших строковых данных не подходит. Приоритет даты / времени даст вам очередь с приоритетом, которая возвращается к очереди FIFIO, если у вас есть несколько элементов с одинаковым приоритетом. Вот пример кода с вторичным числовым приоритетом. Использование значения datetime во второй позиции - довольно тривиальное изменение, но не стесняйтесь указывать мне в комментариях, если вы не можете заставить его работать.
код
import Queue as queue
prio_queue = queue.PriorityQueue()
prio_queue.put((2, 8, 'super blah'))
prio_queue.put((1, 4, 'Some thing'))
prio_queue.put((1, 3, 'This thing would come after Some Thing if we sorted by this text entry'))
prio_queue.put((5, 1, 'blah'))
while not prio_queue.empty():
item = prio_queue.get()
print('%s.%s - %s' % item)
выход
1.3 - This thing would come after Some Thing if we didn't add a secondary priority
1.4 - Some thing
2.8 - super blah
5.1 - blah
Редактировать
Вот как это выглядит, если вы используете временную метку для фальсификации FIFO в качестве вторичного приоритета с использованием даты. Я говорю фальшиво, потому что это только приблизительно FIFO, поскольку записи, которые добавляются очень близко друг к другу, могут не получиться точно FIFO. Я добавил короткий сон, чтобы этот простой пример работал разумно. Надеюсь, это поможет вам как пример того, как вы можете получить заказ, который вы ищете.
import Queue as queue
import time
prio_queue = queue.PriorityQueue()
prio_queue.put((2, time.time(), 'super blah'))
time.sleep(0.1)
prio_queue.put((1, time.time(), 'This thing would come after Some Thing if we sorted by this text entry'))
time.sleep(0.1)
prio_queue.put((1, time.time(), 'Some thing'))
time.sleep(0.1)
prio_queue.put((5, time.time(), 'blah'))
while not prio_queue.empty():
item = prio_queue.get()
print('%s.%s - %s' % item)