python解释器终止机制坑爹 2023-12-03

2023-12-02  本文已影响0人  9_SooHyun

当Python解释器终止时,它会尝试按照以下顺序销毁对象:

然而在某些情况下,当解释器销毁模块时,可能会出现一些问题。例如,如果一个对象在其__del__方法中引用了一个模块,那么在解释器销毁该模块时,可能会出现NameError异常。这是因为解释器在销毁模块时,会将模块的全局变量设置为None,而不是完全销毁它们。

个人认为这个机制是不合理的。任何工程启动服务的时候,要自底向上逐层启动;停止服务的时候,应当自顶向下释放资源

为什么Python解释器要首先销毁所有的模块和全局变量,然后再销毁对象?这样的话,上层对象中引用的一些底层全局依赖先被销毁,上层对象后被销毁,很容易引起奇奇怪怪的异常。。

为了避免这种问题,python只能通过一些强制手段或者兜底catch去保障解释器的“正常”结束:

上一篇 下一篇

猜你喜欢

热点阅读