Python:如何估计/计算数据结构的内存占用量?

估计对象内存占用量的好方法是什么?

相反,测量足迹的好方法是什么?

例如,假设我有一个字典,它的值是整型,浮点型元组列表:

d['key'] = [ (1131, 3.11e18), (9813, 2.48e19), (4991, 9.11e18) ]

我拥有4G的物理内存,并且想要知道在溢出之前我可以在内存中存储多少行(键:值)。 这是在linux / ubuntu 8.04和OS X 10.5.6上。

此外,找出程序的实际内存占用空间的最佳方法是什么? 当耗尽物理记忆和溢出时,我如何最好地弄清楚?


Guppy有一个很好的记忆分析器(Heapy):

>>> from guppy import hpy
>>> hp = hpy()
>>> hp.setrelheap() # ignore all existing objects
>>> d = {}
>>> d['key'] = [ (1131, 3.11e18), (9813, 2.48e19), (4991, 9.11e18) ]
>>> hp.heap()
 Partition of a set of 24 objects. Total size = 1464 bytes.
 Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)
     0      2   8      676  46       676  46 types.FrameType
     1      6  25      220  15       896  61 str
     2      6  25      184  13      1080  74 tuple
 ...

Heapy有点缺乏文档,所以你可能需要挖掘一下网页或源代码,但它非常强大。 也有一些可能相关的文章。


您可以使用内存分析器来做到这一点,其中有一对我意识到:

  • PySizer - 如主页现在推荐的那样 - 极度过时,

  • Heapy。

  • 这可能是这个问题的重复。

    链接地址: http://www.djcxy.com/p/80195.html

    上一篇: Python: How to estimate / calculate memory footprint of data structures?

    下一篇: How to find out GHC's memory representations of data types?