116

Python でオブジェクトの現在の参照カウントを取得する方法はありますか?

4

5 に答える 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引数として変数のアドレスを取ります。ctypesoverを使用する利点は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 に答える