我有一个进程间队列,该队列通常为空,并且偶尔会出现一些东西。在我的一个线程中,我想定义一个while循环,如下所示:
def mythread(queue1):
while (queue1.get_nowait() != 1):
#do stuff
直到队列为空,这在我的情况下会很快发生,因此效果很好。当队列为空时,调用get_nowait()或get(False)会引发空队列异常。有什么方法可以检查队列而不阻塞并且不引发空异常吗?
使用empty
方法
if queue1.empty():
pass
else:
# get items from the queue
注意:doc说“不可靠”(不开玩笑)。
我想这是因为True
在消息发布时它可以返回(队列为空),所以该操作不如捕获异常那样原子。好吧,get_nowait()
我想紧随其后的是一个调用,除非其他一些线程也可以使用该队列,在这种情况下,如果您尝试从中读取条件,则可能会出现争用情况并且该队列可能为空,这没关系!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句