问题标签 [heapy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2904 浏览

python - 将 Heapy 的内存配置文件浏览器与 Twisted.web 一起使用

我正在尝试使用Heapy分析扭曲的 python 代码。例如(伪代码):

我需要做什么才能在配置文件浏览器中查看 Heapy 配置文件结果?

0 投票
2 回答
1146 浏览

python - 加载大对象后测量堆大小的增加

我有兴趣找出加载大对象时python堆的总大小的增加。heapy 似乎是我需要的,但我不明白结果。

我有一个 350 MB 的 pickle 文件,里面有一个 pandas DataFrame,其中包含大约 250 万个条目。当我加载文件并随后使用 heapy 检查堆时,它报告只有大约 8 MB 的对象已添加到堆中。

这给出了以下输出:

让我困惑的是Total sizeof 8694448 bytes。这只是 8 MB。

为什么不能Total size反映整体的大小DataFrame df

(使用 python 2.7.3、heapy 0.1.10、Linux 3.2.0-48-generic-pae (Ubuntu)、i686)

0 投票
1 回答
2774 浏览

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

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

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

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

使用孔雀鱼

Guppy (在此线程中建议)有一个命令,允许获取每个对象类型的累积内存使用量,但不幸的是:

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

对于第二个,可能可以bytes2human从此答案申请,但我需要首先以h.heap()我可以解析的格式收集输出。

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

0 投票
0 回答
40 浏览

python - python:如何确定字典来自哪个文件?

我正在尝试调试内存泄漏。它是一个作为守护进程运行的脚本,并且依赖于 30 个不同文件中的大约 10K 行代码。一段时间后,您会看到内存使用量开始攀升。

我用 heapy 来确定它是一个正在增长的字典,但是我怎样才能找出该字典所在的文件呢?

0 投票
1 回答
2426 浏览

python - 带有 Python 2.7.6 的 Windows 上的 Guppy/Heapy

我刚刚安装了 guppy 0.1.10。然后输入 Ipython 2.1.0

使控制台崩溃,即 Windows 告诉我,python.exe 刚刚崩溃。有什么解决方法吗?还是有很多替代品?

0 投票
1 回答
193 浏览

python - 在 python heapy / guppy 中展开截断的对象视图

我的 django 应用程序中存在内存泄漏,并使用 heapy 来调试内存堆栈。我相信我终于找到了问题的原因。现在我需要一种方法来扩展字符串的截断表示,以便识别源。有没有办法在孔雀鱼中做到这一点?

一组 1 个对象。总大小 = 4831096 字节。索引大小 % 累积 % 表示(有限) 0 4831096 100.0
4831096 100.0 u'< {"to...]}}}]}}}'

这就是我目前正在做的

0 投票
1 回答
434 浏览

python - Python heapy 显示持续使用内存,尽管 60GB 的 ram 在 10 分钟内耗尽

我正在运行一个 tensorflow 模型,该模型在处理大图像时会在大约 10 分钟内耗尽 60G 的 RAM。

我已经运行 Heapy 试图确定泄漏,但 heapy 仅显示 90M 的内存使用量并且保持不变。

我注意到这篇文章:Python 进程消耗越来越多的系统内存,但 heapy 显示大致恒定的使用情况

这表明问题可能出在带有内存碎片的python(此处为2.7)中。但这听起来不像是对本案的合理解释。

  • 我有 2 个 python 队列。在一个中,我从磁盘读取图像并raw使用线程将其加载到队列中。
  • 在另一个线程中,我读取raw队列、预处理并将其加载到ready队列中。
  • 在我的主线程中,我从队列中批量绘制 8 张图像,ready并通过 tensorflow 训练运行它们。
  • 对于 8 个图像批次(每个 ~25MB numpy 矩阵),我应该在任何给定时间在当前处理和两个队列之间至少保留 24 * 25MB 的内存。但是heapy只显示了90M的消耗。

所以 heapy 没有看到至少 600M 的内存,我知道在任何给定的时刻都必须持有。

因此,如果 heapy 看不到我知道的内存,我就不能相信它会看到泄漏的位置。以它泄漏的速度,几乎可以肯定是成批的图像导致了它。

我正在使用threadingpython 中的模块来启动加载器和预处理器线程。我试过print h.heap()从线程代码和主代码中调用,结果都一样。