我有一个test.py文件:
在10次测试中,有5次(随机的)我会遇到以下问题:
我在 Windows 7 x64 上使用 Python3.4.3 [MSC v.1600 32 bit]。那么为什么
class A:
def __init__(self):
print("A init")
def __del__(self):
print("A del")
a = A()
当我运行它10次(python3 test.py
),它总是产生下一个输出:
A init
A del
但是,如果我在脚本结尾添加 sys.exit
呼叫:
import sys
class A:
def __init__(self):
print("A init")
def __del__(self):
print("A del")
a = A()
sys.exit(-1)
在10次测试中,有5次(随机的)我会遇到以下问题:
A init
并且在一半的情况下:
A init
A del
我在 Windows 7 x64 上使用 Python3.4.3 [MSC v.1600 32 bit]。那么为什么
__del__
方法不是每次都被调用?我需要使用其他退出方法来传递脚本的返回代码并确保所有析构函数都被执行吗?还有一个相关的问题:是否可能在收到来自操作系统的 SIGTERM 或 SIGKILL 时执行析构函数?
__del__
。您可以使用signal
模块捕获信号,除了无法被捕获的SIGKILL信号。 - L3viathansys.exit(0);
表示代码正常运行结束。 - AMACB