Python结构的内存大小

是否有关于32位和64位平台上Python数据结构的内存大小的参考?

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

  • int

  • float

  • 参考

  • str

  • unicode字符串

  • tuple

  • list

  • dict

  • set

  • array.array

  • numpy.array

  • deque

  • 新型类对象

  • 旧式类对象

  • ...以及我忘记的一切!

(对于仅保留对其他对象的引用的容器,我们显然不希望自己计算项目的大小,因为它可能是共享的。)

此外,是否有一种方法可以获取对象在运行时使用的内存(递归与否)?


幕布斯7119047
浏览 499回答 3
3回答

白衣非少年

对此先前的问题提出的建议是使用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 40dict 140float 16int 12list 36object 8set 116str 25tuple 28unicode 282012-09-30python 2.7(linux,32位):decimal 36dict 136float 16int 12list 32object 8set 112str 22tuple 24unicode 32python 3.3(Linux,32位)decimal 52dict 144float 16int 14list 32object 8set 112str 26tuple 24unicode 262016-08-01OSX,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 80dict 280float 24int 24list 72object 16set 232str 38tuple 56unicode 52
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python