使用 sys.getsizeof
方法可以查看 python 对象的内存占用,单位:字节 (byte)
实际上是调用了 __sizeof__
方法:
In [35]: import sys
In [36]: sys.getsizeof('hello world')
Out[36]: 60
In [37]: 'hello world'.__sizeof__()
Out[37]: 60
有些数据类型在 Python3 和 Python2 中占用的内存是不同的,例如 range
:
# python3
In [38]: sys.getsizeof(range(999))
Out[38]: 48
In [39]: sys.getsizeof(iter(range(999)))
Out[39]: 48
# python2
>>> sys.getsizeof(range(999))
8064
>>> sys.getsizeof(iter(range(999)))
64
关于这个值是怎么算出来的,有待研究~
暂时已知:这个值包括该对象的数值、签名(包括数据类型、参数、调用方式等)等一系列数据所占总内存。可变对象所占内存可能极小,因为对象是指针,指向很大的数据。
In [65]: s = sys.getsizeof
In [66]: s(1)
Out[66]: 28
In [67]: s(11)
Out[67]: 28
In [68]: s(11111111)
Out[68]: 28
In [69]: s(1111111111)
Out[69]: 32