首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python基类型(特别是int和浮点数)的内存使用情况

Python基类型(特别是int和浮点数)的内存使用情况
EN

Stack Overflow用户
提问于 2019-12-15 09:25:32
回答 2查看 6.7K关注 0票数 14

这是Python3.8.0解释器中的一个示例(但是,它在3.7.5中类似)

代码语言:javascript
复制
>>> 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对象与垃圾收集器开销一起消耗的字节数(参见这里)。基本python类消耗同样数量的内存的原因是什么?

如果我们看一下这些类的实例

代码语言:javascript
复制
>>> import sys
>>> sys.getsizeof(int())
24
>>> sys.getsizeof(float())
24

默认参数是0,这两个实例对此参数的内存使用量相同。但是,如果我试图添加一个参数

代码语言:javascript
复制
>>> sys.getsizeof(int(1))
28
>>> sys.getsizeof(float(1))
24

这就是奇怪的地方。为什么int类型的实例内存使用量增加,而浮点类型的实例内存使用量却没有增加?

EN

Stack Overflow用户

发布于 2019-12-15 10:27:36

看看医生们,重要的是要注意到:

只计算直接归因于对象的内存消耗,而不是它所引用的对象的内存消耗。

那么,从sys.getsizeof(int(1))的返回值大于sys.getsizeof(float(1))的返回值这一事实可以推断出什么呢?

简单地说,表示int比表示float需要更多的内存。这令人惊讶吗?如果我们可以期望用int“做更多的事情”而不是用float“做更多的事情”,那么也许不会。我们可以通过查看其属性的数量来衡量“功能的数量”:

代码语言:javascript
复制
>>> len(dir(int))
70
>>> len(dir(float))
57
票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59342632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档