gpt4 book ai didi

Python:Windows 上的 signal.pause() 等价物

转载 作者:太空狗 更新时间:2023-10-29 21:59:58 25 4
gpt4 key购买 nike

我的主应用程序线程生成 2 个线程,我在主线程中捕获 SIGINT 以很好地退出它们。在 Linux 上,我使用的是 signal.pause(),它运行良好。

在 Windows 上实现 signal.pause() 的最佳方法是什么?

我丑陋的解决方案是:

my_queue.get(True, averylongtime)

然后在我的信号处理程序的 my_queue 中放一些东西。请注意,如果我不指定超时,则不会捕获 SIGINT。但我想知道是否有更好的解决方案。

谢谢

最佳答案

我用这个:

#another:
while not self.quit:
# your code

# main
try:
# your code
except KeyboardInterrupt:
another.quit = True
time.sleep(5) # or wait for threading.enumerate() or similar

如果我想让它更健壮,比如说,在出现错误时也退出:

except KeyboardInterrupt:
another.quit = True
signal.alarm(5)
time.sleep(6)

这样做的一个副作用是,您在 except:except Exception, e: 的每个 block (这不是您应该做的事情)在 except KeyboardInterrupt: raise 前面加上异常不会被“吃掉”。

关于Python:Windows 上的 signal.pause() 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9784972/

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