我在Python 3.4上的64位系统中尝试以下代码,以了解不同原始数据类型的内存消耗。
import sys
print(sys.getsizeof(45)) # prints 28
print(sys.getsizeof(45.2)) # prints 24
我的问题是为什么Integer占用的空间比float值多。但恰恰相反,在32位系统中
import sys
print(sys.getsizeof(45)) # prints 14
print(sys.getsizeof(45.2)) # prints 16
整数占用的内存少于浮点数。为什么会这样?除芯片组尺寸外,它还取决于操作系统吗?
答案 0 :(得分:6)
开销(PyObject_HEAD
)增加了一倍,但是当int的大小从32位增加到64位时,浮点数(双精度)的大小仍为64
32 bit int: overhead = 10 bytes, value = 4 bytes float: overhead = 8 bytes, value = 8 bytes 64 bit int: overhead = 20 bytes, value = 8 bytes float: overhead = 16 bytes, value = 8 bytes
请注意,如果int
不能适合本机数据类型,则{{1}}可能会大于此值