Is there a way to get the current ref count of an object in Python?
Is there a way to get the current ref count of an object in Python?
According to the Python documentation, the sys module contains a function:
import sys
sys.getrefcount(object) #-- Returns the reference count of the object.
Generally 1 higher than you might expect, because of object arg temp reference.
Using the gc module, the interface to the garbage collector guts, you can call gc.get_referrers(foo) to get a list of everything referring to foo.
Hence, len(gc.get_referrers(foo)) will give you the length of that list: the number of referrers, which is what you're after.
See also the gc module documentation.
import ctypes
my_var = 'hello python'
my_var_address = id(my_var)
ctypes.c_long.from_address(my_var_address).value
ctypes takes address of the variable as an argument.
The advantage of using ctypes over sys.getRefCount is that you need not subtract 1 from the result.
Every object in Python has a reference count and a pointer to a type. We can get the current reference count of an object with the sys module. You can use sys.getrefcount(object), but keep in mind that passing in the object to getrefcount() increases the reference count by 1.
import sys
name = "Steve"
# 2 references, 1 from the name variable and 1 from getrefcount
sys.getrefcount(name)