您可以iter
与callable一起使用。(您应该传递两个参数,一个用于可调用对象,另一个用于前哨值)
for job in iter(queue.get, None): # Replace `None` as you need.
# do stuff with job
当没有剩余元素并且没有放置哨兵值时,它将阻塞。另外,就像while
-get
循环,并且与普通的for
容器循环不同,它将从队列中删除项目。
:None
是通用值,因此这是一个具有更具体的哨兵值的示例:
sentinel = object()
for job in iter(queue.get, sentinel):
# do stuff with job