2016-08-05 148 views
0

即约multiprocessing.Queue.get官方文档蟒蛇multiprocessing.Queue.put /得到的块参数

GET([块[,超时])

取出并返回从项目队列。如果 可选的args块为True(默认值)并且超时时间为无( 默认值),则在必要时阻止,直到项目为available。如果超时 是一个正数,则会在至多超时秒数内阻止,并在该时间内没有可用项目时引发队列空例外 。 否则(块为False),返回一个项目,如果其中一个是immediately available,否则引发Queue.Empty异常(在这种情况下超时被忽略 )。

的问题是,什么是提前availableimmediately available

感谢之间的差异。

回答

1

块,如果有必要,直到产品可用

这只是意味着Queue是空的时,你的请求,直到你添加项目到Queue,除非你传递参数将被阻止block = False或设置一些Timeout

立即

这意味着,对Queue一些项目时,你的请求,它会立即返回。

+0

我可以得到你的想法,但上面的答案更清楚,所以我给他正确的标签。 –

1

在设置block=True的第一种情况下,"available"表示物品出现在队列中并准备通过Queue.get()删除。重点是线程/进程将阻止,直到有一个项目准备从队列中删除。

在第二种情况下,block=False所以调用线程将块如果在队列中(没有产品"immediately available"队列上)没有项目。相反,Queue.get()将提高Queue.Empty以表示队列上没有任何内容可供阅读。您的应用程序需要处理该异常,可能是通过执行其他任务,然后再重试。

+0

明白了,非常感谢 –