python为什么要垃圾回收_为什么在禁用CPython垃圾回收器时调用析构函数?

我试图了解CPython垃圾收集器的内部结构,特别是在调用析构函数时。到目前为止,这种行为是直观的,但以下案例却让我感到困惑:禁用GC。在

创建一个对象,然后删除对它的引用。在

对象将被销毁,并调用了方法。在

我以为只有启用了垃圾回收器才会发生这种情况。有人能解释一下为什么会这样吗?有没有办法推迟调用析构函数?在import gc

import unittest

_destroyed = False

class MyClass(object):

def __del__(self):

global _destroyed

_destroyed = True

class GarbageCollectionTest(unittest.TestCase):

def testExplicitGarbageCollection(self):

gc.disable()

ref = MyClass()

ref = None

# The next test fails.

# The object is automatically destroyed even with the collector turned off.

self.assertFalse(_destroyed)

gc.collect()

self.assertTrue(_destroyed)

if __name__=='__main__':

unittest.main()

免责声明:这段代码不是用于生产的——我已经注意到,这是一个非常特定于实现的代码,不适用于Jython。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值