Python在64位系统中对于整数和浮点数的内存消耗

12

我正在尝试在Python 3.4上的64位系统中运行以下代码,以了解不同原始数据类型的内存消耗。

import sys
print(sys.getsizeof(45)) # prints 28
print(sys.getsizeof(45.2)) # prints 24

我的问题是为什么整数占用的空间比浮点数更多。但相反地,在32位系统中

import sys
print(sys.getsizeof(45)) # prints 14
print(sys.getsizeof(45.2)) # prints 16

整数所占的内存比浮点数少。为什么会出现这种情况?它是否取决于操作系统以及芯片组大小之外的因素?

1个回答

9

开销(PyObject_HEAD)已经翻倍,但是尽管整数的大小从32位变成了64位,浮点数(双精度)的大小仍为64位。

32 位
整数:开销=10字节,值=4字节
浮点数:开销=8字节,值=8字节
64 位 整数:开销=20字节,值=8字节 浮点数:开销=16字节,值=8字节

请注意,如果整数无法适应本地数据类型,则它们可能会比这更大。


你知道在Python文档中哪里可以找到相关内容吗? - x squared
@xsquared。你需要查看源代码。floatobject.hlongintrepr.h - John La Rooy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接