Итерируемая очередь Python

Мне нужно знать, когда очередь закрывается и не будет больше элементов, чтобы я мог завершить итерацию.

Я сделал это, поставив часового в очередь:

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

Учитывая, что это очень распространенное использование очереди, не существует ли какой-либо встроенной реализации?

8
задан tshepang 1 July 2014 в 09:08
поделиться