Fila iterável em Python
Eu preciso saber quando uma fila está fechada e não terá mais itens para que eu possa terminar a iteração.
Eu fiz isso colocando um sentinela na fila:
from Queue import Queue
class IterableQueue(Queue):
_sentinel = object()
def __iter__(self):
return self
def close(self):
self.put(self._sentinel)
def next(self):
item = self.get()
if item is self._sentinel:
raise StopIteration
else:
return item
Como esse é um uso muito comum para uma fila, não há nenhuma implementação integrada?