Question

Je veux faire la queue

lambda : Popen(.....)

Pour appeler / attendre plus tard. Puis ajouter un peu plus à Popens fait une pause à la file d'attente, puis les consommer à nouveau et ainsi de suite.

Le module principal File d'attente se soucie beaucoup de la synchronisation, ce qui rend l'api se sentent un peu bizarre dans des endroits. Je ne me soucie pas de la synchronisation (un seul thread programme, Popen juste faire leur travail et jeter exception en cas d'erreur et ils ne portent pas atteinte l'environnement de toutes les façons importantes (elles génèrent des fichiers)

Devrais-je utiliser un générateur que j'ajoute à un moment plus tard. Si oui ce qui est une bonne façon d'ajouter des éléments générateurs, appelant

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

semble chaque fois wastefull.

Était-ce utile?

La solution

Oui, vous pouvez utiliser un deque (collections.deque), qui est une liste que vous pouvez efficacement pousser et pop à chaque extrémité. Vous pouvez également utiliser une liste et ne pas se soucier de l'inefficacité, car il n'a probablement pas.

Autres conseils

Vous pouvez utiliser collections.deque :

from collections import deque

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

Puisque vous n'êtes pas préoccupé par le multi-threading, le choix logique semble être collections.deque .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top