gpt4 book ai didi

python - IPython session 期间内存中对象的大小(使用 Guppy?)

转载 作者:太空宇宙 更新时间:2023-11-04 03:56:10 25 4
gpt4 key购买 nike

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

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

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

使用孔雀鱼

Guppy (在 this thread 中建议)有一个命令可以获取累积内存使用每个对象类型,但不幸的是:

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

对于第二个,可以应用来自 this answerbytes2human ,但我需要先以我可以解析的格式收集 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.>

最佳答案

为什么不使用类似的东西:

h.heap().byid

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

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

h.iso(object).domisize

找到删除后释放的大概内存量。

关于python - IPython session 期间内存中对象的大小(使用 Guppy?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18338520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com