万一宇宙不走生命周期?
在跟一个后辈解释python对象中的销毁函数__del__
时说,它相当于一个对象被垃圾回收gc
时的一个回调函数,于是我给了他一个例子
class Foo:
def __del__(self):
print('del')
f = Foo()
f = 1 # 当执行这一句时,f会被gc,从而执行__del__,打印del
但__del__
并不能保证执行,例如当你程序启动后,直接在进程里kill
了;或者你启动了python交互式shell,然后点了右上角的叉,直接给terminate
,这些情况都是不会执行__del__
的
他说,应该有那种程序关闭时执行的函数吧
我说,有atexit
模块就可以注册程序结束时要执行的回调函数,但是那也是没用的,程序被kill
了,程序本身是感知不到的。
程序不会管理自己,它一定在某个载体上,被某个东西使用,就像你执行了python
,他的使用者是操作系统,操作系统可以选择让python
走正常结束的流程,正常流程就是对象都gc
,退出的回调函数也都执行;但也一定有权力让他悄无声息的消失,python
无法得知将会面临的命运
他若有所思
我接着说,举个例子,就像我们使用的电脑系统,我们可以正常关机,就是点击系统里的关机按钮,然后系统会保存相关文件;我们也可以直接拔了电源,这种情况下,系统是无法感知到的,它更没有办法做任何事情,对它来说这是超验的。
他说大概懂了
在吃饭的时候,我突然意识到,我们所在的宇宙也是个系统,会不会有一天,上帝
会直接把电源给切断,让宇宙不走她的生命周期呢?