2012-01-19 3 views
3

Я хочу создать приложение с использованием скрученной структуры с некоторыми отложенными добавлениями многополюсных элементов в очередь.Сортировка, параллельная реализация очереди (скрученная) с sqlite?

Очередь потребляется приложением с другими отложенными сроками. Проблема в том, что я хочу потреблять элементы очереди не по порядку добавления, но уделять более высокий приоритет некоторым элементам на основе содержимого поля элемента.

Моя текущая (вероятно, ошибочная) идея заключалась в том, чтобы иметь генератор, который выполняет выбор sql, который создает набор результатов с соответствующим приоритетом и перебирает этот результат для генерации отложенных событий. Проблема заключается в том, что генератор выполняет итерацию по результирующему набору, причем дополнительные элементы могут быть добавлены в очередь по отложенным.

Есть ли способ сделать это, не выполняя новый выбор при каждом вызове генератора? То есть может ли «результирующий набор» и курсор итератора автоматически «обновляться»?

Если нет, как бы вы это реализовали?

ответ

2

модуль Queue имеет PriorityQueue класс, который может удовлетворить ваши

+0

Спасибо. PriorityQueue - это то, что я искал. – ARF

1

Почему бы не использовать список Python, используя модуль «heapq» из stdlib, чтобы сохранить его в порядке приоритета? (Элементы вашего списка - это кортежи с приоритетом (приоритет, время_означения, объекты) - и поскольку данные хранятся в обычном списке Python, вы можете передать его без проблем в витой папке.

Я думаю, что было бы проще чем при использовании SQLite, если все, что вам нужно, сортировать по приоритету

(В этом ответе я помещаю пример использования heapq, которые могли бы помочь: heapq with custom compare predicate).

+0

Я не думаю, что это должно было быть опущено. разумный ответ. –

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