gpt4 book ai didi

multithreading - 在 python 中使用 get_nowait() 而不引发空异常

转载 作者:行者123 更新时间:2023-12-04 06:37:10 27 4
gpt4 key购买 nike

我有一个进程间队列,它通常是空的,并且偶尔会出现一些东西。在我的一个线程中,我想定义一个像这样的 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

注意:医生说“不可靠”(不是开玩笑)。

我想那是因为它可以返回 True (队列为空)同时发布消息,因此操作不像捕获异常那样原子。好吧,后面跟着一个 get_nowait()调用我想除非其他线程也可以使用队列,否则这无关紧要,在这种情况下可能会发生竞争条件并且当您尝试从中读取时队列可能为空!

关于multithreading - 在 python 中使用 get_nowait() 而不引发空异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39170249/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com