Domanda

Voglio fare la fila

lambda : Popen(.....)

Per chiamare/attendere in un secondo momento. Quindi aggiungi un po 'di più per fare pause in pausa alla coda, quindi consumarle di nuovo e così via.

Il modulo di coda principale si preoccupa molto della sincronizzazione e questo rende l'API un po 'strana in alcuni punti. Non mi interessa la sincronizzazione (programma a filo singolo, Popen fa il proprio lavoro e lancia un'eccezione sull'errore e non influiscono sull'ambiente in alcun modo importante (generano file)

Dovrei solo usare un generatore che lo aggiungo in un secondo momento. In tal caso, qual è un buon modo per aggiungere oggetti ai generatori, chiamando

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

Ogni volta sembra spreco.

È stato utile?

Soluzione

Sì, puoi usare un deque (collections.deque), che è un elenco che è possibile spingere in modo efficiente e pop su entrambe le estremità. Potresti anche usare un elenco e non preoccuparti dell'inefficienza poiché probabilmente non importa.

Altri suggerimenti

Puoi usare Collections.deque:

from collections import deque

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

Dato che non sei preoccupato per il multi-threading, la scelta logica sembrerebbe essere Collections.deque.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top