__del__退出行为
我有一些test.py文件:
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位]。那么为什么__del__
方法不是每次都调用?我是否需要使用其他退出方法来传递脚本的返回代码,并确保所有析构函数都已执行?还有一个相关的问题:是否可以在从OS接收SIGTERM或SIGKILL时执行析构函数?