当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《Python:如何估计/计算数据结构的内存占用量?》经验,为你挑选了2个好方法。

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

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

例如,假设我有一个字典,其值是整数,浮动元组的列表:

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

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

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



1> Torsten Mare..:

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有点不详,所以你可能不得不深入挖掘一下网页或源代码,但它非常强大.还有一些可能相关的文章.



2> Brian..:

您可以使用内存分析器执行此操作,其中有一些我知道:

    PySizer - 正如主页现在推荐的那样,已经过时了:

    Heapy.

这可能是这个问题的重复.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有