我有一个进程间队列,通常是空的,并且偶尔会出现一些东西。在我的一个线程中,我想定义一个像这样的 while 循环:
def mythread(queue1):
while (queue1.get_nowait() != 1):
#do stuff
这非常有效,直到队列为空,在我的情况下,这种情况很快就会发生。当队列为空时,调用 get_nowait() 或 get(False) 会引发空队列异常。有没有什么方法可以在不阻塞且不引发空异常的情况下检查队列?
use empty
method
if queue1.empty():
pass
else:
# get items from the queue
注意:医生说“不可靠”(不是开玩笑)。
我想那是因为它可以返回True
(队列为空)同时发布消息,因此该操作不像捕获异常那样原子。嗯,接下来是一个get_nowait()
我认为这并不重要,除非其他线程也可以消耗该队列,在这种情况下,可能会发生竞争情况,并且当您尝试从中读取时,队列可能为空!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)