我记得阅读中很难确定对象的确切内存使用情况。但是,这个线程是从2009年开始的,从那时起,我已经阅读了Python中的各种内存分析器(参见这条线中的示例)。此外,近几个月来,IPython已经相当成熟(几天前发布了1.0版)
IPython已经有了一个名为whos的魔术,它可以打印变量名、它们的类型和一些基本的数据/信息。
以类似的方式,是否有任何方法来获取who返回的每个对象的内存大小?IPython中已经有用于此目的的实用程序了吗?
使用格皮
格皮 (在这条线中建议)有一个命令,它允许每个对象类型的获取累积内存使用情况,但不幸的是:
对于第二种方式,可能可以从这个答案中应用这个答案,但我需要首先以我可以解析的格式收集h.heap()的输出。
但是对于第一个(最重要的),是否有办法让Guppy显示每个对象的内存使用情况()?
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.>发布于 2014-05-07 08:19:34
为什么不使用这样的方法:
h.heap().byid但这只会显示直接大小(即不显示列表的总大小,包括它可能引用的其他列表)。
如果您有一个特定的对象,您希望得到您可以使用的大小:
h.iso(object).domisize若要查找删除后将释放的大约内存量,请执行以下操作。
https://stackoverflow.com/questions/18338520
复制相似问题