为了账号安全,请及时绑定邮箱和手机立即绑定

Python结构的内存大小

Python结构的内存大小

幕布斯7119047 2019-11-06 10:24:21
是否有关于32位和64位平台上Python数据结构的内存大小的参考?如果没有,那么将其放在SO上会很好。越详尽越好!那么以下Python结构使用了多少字节(取决于相关时的len和内容类型)?intfloat参考strunicode字符串tuplelistdictsetarray.arraynumpy.arraydeque新型类对象旧式类对象...以及我忘记的一切!(对于仅保留对其他对象的引用的容器,我们显然不希望自己计算项目的大小,因为它可能是共享的。)此外,是否有一种方法可以获取对象在运行时使用的内存(递归与否)?
查看完整描述

3 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

对此先前的问题提出的建议是使用sys.getsizeof(),并引用:


>>> import sys

>>> x = 2

>>> sys.getsizeof(x)

14

>>> sys.getsizeof(sys.getsizeof)

32

>>> sys.getsizeof('this')

38

>>> sys.getsizeof('this also')

48

您可以采用这种方法:


>>> import sys

>>> import decimal

>>> 

>>> d = {

...     "int": 0,

...     "float": 0.0,

...     "dict": dict(),

...     "set": set(),

...     "tuple": tuple(),

...     "list": list(),

...     "str": "a",

...     "unicode": u"a",

...     "decimal": decimal.Decimal(0),

...     "object": object(),

... }

>>> for k, v in sorted(d.iteritems()):

...     print k, sys.getsizeof(v)

...

decimal 40

dict 140

float 16

int 12

list 36

object 8

set 116

str 25

tuple 28

unicode 28

2012-09-30


python 2.7(linux,32位):


decimal 36

dict 136

float 16

int 12

list 32

object 8

set 112

str 22

tuple 24

unicode 32

python 3.3(Linux,32位)


decimal 52

dict 144

float 16

int 14

list 32

object 8

set 112

str 26

tuple 24

unicode 26

2016-08-01


OSX,Python 2.7.10(默认,2015年10月23日,19:19:21)[GCC 4.2.1兼容的Apple LLVM 7.0.0(clang-700.0.59.5)]


decimal 80

dict 280

float 24

int 24

list 72

object 16

set 232

str 38

tuple 56

unicode 52


查看完整回答
反对 回复 2019-11-06
  • 3 回答
  • 0 关注
  • 498 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信