gpt4 book ai didi

python - Python 结构的内存大小

转载 作者:IT老高 更新时间:2023-10-28 21:06:26 29 4
gpt4 key购买 nike

在 32 位和 64 位平台上 Python 数据结构的内存大小有引用吗?

如果没有,那么将它放在 SO 上会很好。越详尽越好!那么以下 Python 结构使用了多少字节(取决于 len 和相关的内容类型)?

  • int
  • float
  • 引用
  • str
  • unicode 字符串
  • 元组
  • 列表
  • 字典
  • 设置
  • array.array
  • numpy.array
  • deque
  • 新型类对象
  • 老式类对象
  • ...以及我忘记的一切!

(对于只保留对其他对象的引用的容器,我们显然不想计算项目本身的大小,因为它可能是共享的。)

此外,有没有办法在运行时(递归或不递归)获取对象使用的内存?

最佳答案

来自an earlier question 的推荐在此使用 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 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] 在 darwin 上

decimal 80
dict 280
float 24
int 24
list 72
object 16
set 232
str 38
tuple 56
unicode 52

关于python - Python 结构的内存大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1331471/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com