python的gc模块_Python:在交互模式下使用gc模块的不同行为

我希望能够获得对类的任何现有对象实例的引用元组.我想出的是:

import gc

def instances(theClass):

instances = []

gc.collect()

for i in gc.get_referrers(theClass):

if isinstance(i, theClass):

instances.append(i)

return tuple(instances)

如果在Python intepreter提示符下输入上述代码,则可以执行以下操作:

>>> class MyClass(object):

>>> pass

>>> c = MyClass()

>>> instances(MyClass)

(<__main__.myclass object at>,)

万岁.但是,似乎gc.collect()实际上并没有在函数内部做任何事情:

>>> del c

>>> instances(MyClass)

(<__main__.myclass object at>,)

但是gc.collect()在函数外部工作:

>>> del c

>>> gc.collect()

>>> instances(MyClass)

()

所以,我的问题是:如何让gc.collect()在函数内部实际执行完整集合(为什么它不能正常工作)?有推论的问题:是否有更好的方法来实现返回元组的相同目标,该元组具有对特定类的对象实例的引用?

注意:这都是在Python 2.7.3中尝试过的.我还没有在Python 3中尝试过它,但我的目标是拥有一个可以工作的功能(或者至少可以用2to3转换).

编辑(下面的答案)澄清问题实际上是关于交互模式,而不是gc.collect()函数本身.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值