在python中SIGINT本质上是不可靠的吗?
我有一个应用程序,它依赖于在python中SIGINT本质上是不可靠的吗?,python,garbage-collection,generator,sigint,keyboardinterrupt,Python,Garbage Collection,Generator,Sigint,Keyboardinterrupt,我有一个应用程序,它依赖于SIGINT实现正常关机。我注意到,每隔一段时间它就会继续运行。原因原来是xml/etree/ElementTree.py中的一个生成器 如果清理生成器时SIGINT到达,则忽略所有异常(回想一下SIGINT的默认操作是引发键盘中断)。这不是这个特定的生成器所独有的,也不是一般的生成器所独有的 来自python文档: “由于调用\uu del\uuu()方法的不稳定情况,在执行过程中发生的异常将被忽略,并将警告打印到sys.stderr” 在用python编程的五年多时
SIGINT
实现正常关机。我注意到,每隔一段时间它就会继续运行。原因原来是xml/etree/ElementTree.py
中的一个生成器
如果清理生成器时SIGINT
到达,则忽略所有异常(回想一下SIGINT
的默认操作是引发键盘中断)。这不是这个特定的生成器所独有的,也不是一般的生成器所独有的
来自python文档:
“由于调用\uu del\uuu()
方法的不稳定情况,在执行过程中发生的异常将被忽略,并将警告打印到sys.stderr”
在用python编程的五年多时间里,这是我第一次遇到这个问题
如果垃圾收集可以在任何一点发生,那么理论上也可以在任何一点忽略SIGINT
,我永远不能依赖它。对吗?我一直都很幸运吗
或者它与这个特定的包和这个特定的生成器有关吗?(供参考:)这只是一个猜测,但内置类型或Python中未定义
\uu del\uu
的类型不会出现问题。您还可以使用signal.signal
执行一些操作,以其他方式处理它。