小编Ale*_*tin的帖子

解释器关闭时对象会发生什么

当Python解释器关闭时,我对对象发生了什么感到困惑.如果我写一些类似的代码

class MyClass(object):
    def __del__(self):
        print "I'm going away"

o = MyClass()
Run Code Online (Sandbox Code Playgroud)

并运行它,我会得到这个

I'm going away
Run Code Online (Sandbox Code Playgroud)

我的理解是,当解释器关闭时,它将删除对创建对象的所有引用,__del__()如果指定了这些对象将运行(因为它们的引用计数为0).

我的困惑是因为:

  1. 我无法找到任何文档说python将在退出时清除所有引用.
  2. 我很困惑为什么当内存即将返回操作系统并且无论如何都被宣布为空闲时它正在清理对象.我想在复杂的系统中,删除内存中即将是免费的对象的成本很高.
  3. 阅读有关__del__()我看到的文档It is not guaranteed that __del__() methods are called for objects that still exist when the interpreter exits.并且它变得有点复杂,他们是否说由于某些循环依赖性而无法保证可以运行它或者它不能保证?是谁决定的?

所以我的问题是:

  1. 谁打电话给__del__我上面的例子
  2. guaranteed当我没有参考周期时,为什么不调用它

python

8
推荐指数
1
解决办法
122
查看次数

标签 统计

python ×1