Python查看对象所占内存大小
以下内容摘自ChatGPT
在Python中,可以使用sys模块中的getsizeof()函数来查看一个数据结构所占用的内存大小。
该函数返回对象占用的字节数,但是需要注意以下几点:
1. getsizeof()函数只能返回对象本身占用的内存大小,而不能返回其引用的其他对象所占用的内存大小。
2. 对于容器类型(如列表、字典等),getsizeof()函数只会计算容器本身占用的内存大小,而不会计算其元素或键值对所占用的内存大小。
3. getsizeof()函数返回的结果可能会受到Python解释器和操作系统等因素的影响,因此仅供参考。
下面是一个示例代码,演示如何使用getsizeof()函数来查看一个列表和一个字典所占用的内存大小:
import sys my_list = [1, 2, 3, 4, 5] my_dict = {'a': 1, 'b': 2, 'c': 3} print("Size of my_list:", sys.getsizeof(my_list)) print("Size of my_dict:", sys.getsizeof(my_dict))
输出结果类似于:
Size of my_list: 104
Size of my_dict: 240
需要注意的是,在不同版本和不同平台上运行时,输出结果可能会有所不同。
查到的内容
如果想一次性获取Python对象完整的内存大小,可以用Pympler库的pympler.asizeof.asizeof函数
示例:
from pympler import asizeof
print(asizeof([1, 55, 2])) print(asizeof(asizeof))
其实,经过测试:
1.asizeof函数获取的列表内存比sys.getsizeof函数获取的列表+元素内存总和要高;
2.asizeof认为函数是没有内存占用的(为0),而sys.getsizeof返回的函数内存大于0。