tru*_*ite 2 python multithreading
我正在使用python Queue存储要由线程处理的项目.从我在网上看到的,在队列中放入一个'None'对象并设置这样的线程处理将使线程停止.(它确实如此)
for item in iter(queue.get, None):
#do stuff
queue.task_done()
Run Code Online (Sandbox Code Playgroud)
现在我在网上找不到关于这种类型的for循环的很多信息.从我所看到它刚刚结束,并不会处理任何在队列中留下None对象的东西.在末尾添加queue.task_done()不起作用.
有人可以向我解释这种类型的for循环.他们是如何命名的,他们如何在一般情况下工作,或指向我一些关于它的好文档,因为我找不到任何.
这一行:
for item in iter(queue.get, None):
Run Code Online (Sandbox Code Playgroud)
读
"继续打电话
queue.get,然后运行循环体,直到queue.get() == None
如果给出第二个参数sentinel ,则o必须是可调用对象。在这种情况下创建的迭代器将在每次调用其方法时不带参数地调用o
next();如果返回的值等于Sentinel,StopIteration将被提升,否则将返回该值。
所以循环的行为相当于:
sentinel = None
while True:
item = queue.get()
if item == sentinel:
break
# do stuff
queue.task_done()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2674 次 |
| 最近记录: |