Python でオブジェクトの現在の参照カウントを取得する方法はありますか?
43232 次
5 に答える
127
Python documentationによると、sys
モジュールには次の関数が含まれています。
import sys
sys.getrefcount(object) #-- Returns the reference count of the object.
通常、オブジェクト引数の一時参照のため、予想よりも 1 高くなります。
于 2009-02-04T07:39:03.833 に答える
74
gc
ガベージ コレクターのガッツへのインターフェイスであるモジュールを使用すると、 を呼び出しgc.get_referrers(foo)
て、 を参照するすべてのリストを取得できますfoo
。
したがって、len(gc.get_referrers(foo))
そのリストの長さ、つまりリファラーの数が得られます。これは、あなたが求めているものです。
gc
モジュールのドキュメントも参照してください。
于 2009-02-04T07:36:25.477 に答える
6
import ctypes
my_var = 'hello python'
my_var_address = id(my_var)
ctypes.c_long.from_address(my_var_address).value
ctypes
引数として変数のアドレスを取ります。ctypes
overを使用する利点はsys.getRefCount
、結果から 1 を引く必要がないことです。
于 2019-10-21T19:31:46.313 に答える
0
Python のすべてのオブジェクトには、参照カウントと型へのポインターがあります。sys モジュールを使用して、オブジェクトの現在の参照カウントを取得できます。sys.getrefcount(object)を使用できますが、オブジェクトを getrefcount() に渡すと参照カウントが 1 増えることに注意してください。
import sys
name = "Steve"
# 2 references, 1 from the name variable and 1 from getrefcount
sys.getrefcount(name)
于 2021-12-03T13:02:25.870 に答える