用于int和float的64位系统中的Python内存消耗

时间:2015-07-17 06:25:30

标签: python python-3.x memory

我在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

整数占用的内存少于浮点数。为什么会这样?除芯片组尺寸外,它还取决于操作系统吗?

1 个答案:

答案 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}}可能会大于此值