有没有办法获得Python中的对象的当前裁判计数?
有没有办法获得Python中的对象的当前裁判计数?
根据一些Python 2.0参考( http://www.brunningonline.net/simon/python/quick-ref2_0.html),sys模块包含一个函数:;
import sys sys.getrefcount(object) #-- Returns the reference count of the object.
由于对象arg临时引用,一般比您预期的要高1。
使用gc
模块,可以调用gc.get_referrers(foo)
获取引用foo
的所有内容。
因此, len(gc.get_referrers(foo))
会给你这个列表的长度:引用者的数量,这就是你所追求的。
另请参阅gc
模块文档 。
有'gc.get_referrers()'和'sys.getrefcount()。 但是,很难看出sys.getrefcount(X)
如何能够达到传统引用计数的目的。 考虑:
import sys def function(X): sub_function(X) def sub_function(X): sub_sub_function(X) def sub_sub_function(X): print sys.getrefcount(X)
然后function(SomeObject)
传递'7', sub_function(SomeObject)
传递'5', sub_sub_function(SomeObject)
传递'3',而sys.getrefcount(SomeObject)
传递'2'。
换句话说:如果使用'sys.getrefcount()',你必须知道函数的调用深度。 对于'gc.get_referrers()'可能需要筛选引用列表。 我会build议为“变更隔离”这样的目的进行手工引用计数 ,即“如果在其他地方引用了克隆”。