¿Hay otras colas en la biblioteca estándar?
-
27-10-2019 - |
Pregunta
Quiero hacer cola
lambda : Popen(.....)
Llamar/esperar en un momento posterior. Luego agregue un poco más a Popens pausado a la cola, luego consumalos nuevamente, y así sucesivamente.
El módulo de cola principal se preocupa mucho por la sincronización y esto hace que la API se sienta un poco extraña en algunos lugares. No me importa sincronizar (programa de un solo rostro, Popen simplemente haga su trabajo y arroje una excepción por error y no afectan el entorno de ninguna manera importante (generan archivos)
¿Debería usar un generador que le agregue más adelante? Si es así, ¿cuál es una buena forma de agregar elementos a los generadores, llamar
gena = itertools.chain(gena,[item))
Cada vez parece derrochador.
Solución
Sí, puede usar un Deque (colección.deque), que es una lista que puede presionar y explotar de manera eficiente en cualquier extremo. También podría usar una lista y no preocuparse por la ineficiencia, ya que probablemente no importa.
Otros consejos
Puedes usar colección.deque:
from collections import deque
queue = deque()
queue.append(new) # append
current = queue.popleft() # first item
Dado que no le preocupa la multicina, la elección lógica parece estar colección.deque.