Python 多处理。Queue.put/get 的块参数



这是关于多处理的官方文档。Queue.get

获取([块[,超时]])

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

问题是availableimmediately available 之间有什么区别

提前谢谢。😄

必要时阻止,直到某个项目可用

这只是意味着当您发出请求时,Queue是空的,除非您传递参数block = False或设置一些Timeout,否则在向Queue添加项之前,它将被阻止。

立即可用

这意味着,当您提出请求时,Queue上有一些项目,它将立即返回。

在设置了block=True的第一种情况下,"available"表示队列中存在项目并准备由Queue.get()移除。关键是线程/进程将阻止,直到有一个项目准备从队列中删除。

在第二种情况下,block=False,因此如果队列中没有项目(队列上没有项目是"immediately available"),调用线程将而不是阻塞。相反,CCD_ 15将引发CCD_ 16以表示队列中没有要读取的内容。您的应用程序需要处理该异常,可能需要执行其他任务,然后稍后重试。

最新更新