Есть ли другие очереди в стандартной библиотеке?

StackOverflow https://stackoverflow.com/questions/8367872

Вопрос

Я хочу стоять в очереди

lambda : Popen(.....)

Позвонить/подождать позже. Затем добавьте еще немного, чтобы приостановить Popens в очередь, затем потребляйте их снова и так далее.

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

Должен ли я просто использовать генератор, который я добавляю к нему позже. Если да, то какой способ добавить элементы в генераторы, звонить

gena = itertools.chain(gena,[item))

Каждый раз кажется расточительным.

Это было полезно?

Решение

Да, вы можете использовать deque (collections.deque), который представляет собой список, который вы можете эффективно подтолкнуть и заскочить на любом конце. Вы также можете использовать список и не беспокоиться о неэффективности, поскольку это, вероятно, не имеет значения.

Другие советы

Вы можете использовать Collections.deque:

from collections import deque

queue = deque()
queue.append(new) # append
current = queue.popleft() # first item

Поскольку вы не обеспокоены многопоточным, логический выбор, казалось бы, был бы Collections.deque.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top