【发布时间】:2019-12-15 09:25:32
【问题描述】:
这是来自 Python 3.8.0 解释器的示例(不过,在 3.7.5 中类似)
>>> import sys
>>> sys.getsizeof(int)
416
>>> sys.getsizeof(float)
416
>>> sys.getsizeof(list)
416
>>> sys.getsizeof(tuple)
416
>>> sys.getsizeof(dict)
416
>>> sys.getsizeof(bool)
416
getsizeof() 返回 Python 对象消耗的字节数以及垃圾收集器开销(请参阅here)。基本的python类消耗相同数量的内存是什么原因?
如果我们看看这些类的实例
>>> import sys
>>> sys.getsizeof(int())
24
>>> sys.getsizeof(float())
24
默认参数是0,这两个实例对此参数的内存使用量相同。但是,如果我尝试添加一个参数
>>> sys.getsizeof(int(1))
28
>>> sys.getsizeof(float(1))
24
这就是奇怪的地方。为什么 int 类型的实例内存使用量增加,而 float 类型却没有?
【问题讨论】:
-
Python != C 。
getsizeof(some_type)为您提供 类型对象本身 的大小,而不是该类型的实例。试试getsizeof(1); getsizeof(1.0); getsizeof([])
标签: python memory-management python-internals