如何在 Python 中获取对象的大小
How to get the Size of an object in Python
使用该sys.getsizeof()
方法获取对象的大小,例如
sys.getsizeof(my_object)
. 该方法接受一个对象参数并以字节为单位返回对象的大小。所有内置对象都可以传递给该
sys.getsizeof()
方法。
import sys print(sys.getsizeof(['a', 'b', 'c'])) # 👉️ 80 print(sys.getsizeof(10 ** 10)) # 👉️ 32
sys.getsizeof方法以字节为单位
返回对象的大小。
该对象可以是任何类型的对象,所有内置对象都返回正确的结果。
该getsizeof
方法只考虑对象的直接内存消耗,而不是它引用的对象的内存消耗。
请注意,某些 Python 对象(如列表和字典)可能会引用其他对象,而该getsizeof
方法并未考虑到这一点。
官方文档中有一个
递归的 sizeof 配方。它getsizeof
递归地使用查找对象的大小和它引用的对象。
getsizeof()
方法调用__sizeof__
对象的方法,因此它不处理未实现它的自定义对象。您也可以getsizeof
直接导入方法而不是导入整个sys
模块。
from sys import getsizeof print(getsizeof(['a', 'b', 'c'])) # 👉️ 80 print(getsizeof(10 ** 10)) # 👉️ 32
The sys.getsizeof()
method takes an optional second argument – a default value
to return if the object doesn’t provide means to retrieve the size.
If no default value is provided and the object’s size cannot be calculated, a
TypeError
is raised.
Here are examples of passing different types of objects to the getsizeof
method.
from sys import getsizeof # 👇️ int print(getsizeof(0)) # 👉️ 24 # 👇️ float print(getsizeof(0.0)) # 👉️ 24 # 👇️ string print(getsizeof('')) # 👉️ 49 # 👇️ set print(getsizeof(set())) # 👉️ 216 # 👇️ tuple print(getsizeof(())) # 👉️ 40 # 👇️ list print(getsizeof([])) # 👉️ 56 # 👇️ dict print(getsizeof({})) # 👉️ 64 # 👇️ boolean print(getsizeof(True)) # 👉️ 28
Some objects like lists
reserve space for more objects than they contain.