首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IPython会话期间内存中对象的大小(使用Guppy?)

IPython会话期间内存中对象的大小(使用Guppy?)
EN

Stack Overflow用户
提问于 2013-08-20 15:03:55
回答 1查看 3K关注 0票数 3

我记得阅读中很难确定对象的确切内存使用情况。但是,这个线程是从2009年开始的,从那时起,我已经阅读了Python中的各种内存分析器(参见这条线中的示例)。此外,近几个月来,IPython已经相当成熟(几天前发布了1.0版)

IPython已经有了一个名为whos的魔术,它可以打印变量名、它们的类型和一些基本的数据/信息。

以类似的方式,是否有任何方法来获取who返回的每个对象的内存大小?IPython中已经有用于此目的的实用程序了吗?

使用格皮

格皮 (在这条线中建议)有一个命令,它允许每个对象类型的获取累积内存使用情况,但不幸的是:

  1. 它没有显示每个对象的内存使用情况()。
  2. 它以字节(而不是人类可读的格式)打印大小。

对于第二种方式,可能可以从这个答案中应用这个答案,但我需要首先以我可以解析的格式收集h.heap()的输出。

但是对于第一个(最重要的),是否有办法让Guppy显示每个对象的内存使用情况()?

代码语言:javascript
复制
In [6]: import guppy

In [7]: h = guppy.hpy()                                                                                                                                     

In [8]: h.heap()
Out[8]: 
Partition of a set of 2871824 objects. Total size = 359064216 bytes.
 Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)
     0 522453  18 151469304  42 151469304  42 dict (no owner)
     1 451503  16 36120240  10 187589544  52 numpy.ndarray
     2 425700  15 34056000   9 221645544  62 sklearn.grid_search._CVScoreTuple
     3 193439   7 26904688   7 248550232  69 unicode
     4 191061   7 22696072   6 271246304  76 str
     5 751128  26 18027072   5 289273376  81 numpy.float64
     6  31160   1 12235584   3 301508960  84 list
     7 106035   4  9441640   3 310950600  87 tuple
     8   3300   0  7260000   2 318210600  89 dict of 0xb8670d0
     9   1255   0  3788968   1 321999568  90 dict of module
<1716 more rows. Type e.g. '_.more' to view.>
EN

回答 1

Stack Overflow用户

发布于 2014-05-07 08:19:34

为什么不使用这样的方法:

代码语言:javascript
复制
h.heap().byid

但这只会显示直接大小(即不显示列表的总大小,包括它可能引用的其他列表)。

如果您有一个特定的对象,您希望得到您可以使用的大小:

代码语言:javascript
复制
h.iso(object).domisize

若要查找删除后将释放的大约内存量,请执行以下操作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18338520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档