我需要知道什么时候队列已经关闭并且不会再有更多的项目,以便我可以结束迭代。
我通过在队列中放置一个哨兵来实现:
我通过在队列中放置一个哨兵来实现:
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
鉴于这是队列的一个非常常见的用法,难道没有任何内置实现吗?