蟒蛇multiprocessing.Queue.put /得到的块参数
即约multiprocessing.Queue.get官方文档蟒蛇multiprocessing.Queue.put /得到的块参数
GET([块[,超时])
取出并返回从项目队列。如果 可选的args块为True(默认值)并且超时时间为无( 默认值),则在必要时阻止,直到项目为
available
。如果超时 是一个正数,则会在至多超时秒数内阻止,并在该时间内没有可用项目时引发队列空例外 。 否则(块为False),返回一个项目,如果其中一个是immediately available
,否则引发Queue.Empty异常(在这种情况下超时被忽略 )。
的问题是,什么是提前available
和immediately available
感谢之间的差异。
块,如果有必要,直到产品可用
这只是意味着Queue
是空的时,你的请求,直到你添加项目到Queue
,除非你传递参数将被阻止block = False
或设置一些Timeout
。
立即
这意味着,对Queue
一些项目时,你的请求,它会立即返回。
在设置block=True
的第一种情况下,"available"
表示物品出现在队列中并准备通过Queue.get()
删除。重点是线程/进程将阻止,直到有一个项目准备从队列中删除。
在第二种情况下,block=False
所以调用线程将不块如果在队列中(没有产品"immediately available"
队列上)没有项目。相反,Queue.get()
将提高Queue.Empty
以表示队列上没有任何内容可供阅读。您的应用程序需要处理该异常,可能是通过执行其他任务,然后再重试。
明白了,非常感谢 –
我可以得到你的想法,但上面的答案更清楚,所以我给他正确的标签。 –