gpt4 book ai didi

Python 可迭代队列

转载 作者:太空狗 更新时间:2023-10-29 20:42:45 25 4
gpt4 key购买 nike

我需要知道队列何时关闭并且不会有更多项目以便我可以结束迭代。

我通过在队列中放置一个哨兵来做到这一点:

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

鉴于这是队列的一种非常常见的用途,难道没有任何内置实现吗?

最佳答案

哨兵是生产者发送没有更多队列任务即将到来的消息的合理方式。

FWIW,使用 iter() 的两个参数形式可以大大简化您的代码:

from Queue import Queue

class IterableQueue(Queue):

_sentinel = object()

def __iter__(self):
return iter(self.get, self._sentinel)

def close(self):
self.put(self._sentinel)

关于Python 可迭代队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11288158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com