问题标签 [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.
python - 加载大对象后测量堆大小的增加
我有兴趣找出加载大对象时python堆的总大小的增加。heapy 似乎是我需要的,但我不明白结果。
我有一个 350 MB 的 pickle 文件,里面有一个 pandas DataFrame
,其中包含大约 250 万个条目。当我加载文件并随后使用 heapy 检查堆时,它报告只有大约 8 MB 的对象已添加到堆中。
这给出了以下输出:
让我困惑的是Total size
of 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)
python - IPython 会话期间内存中对象的大小(使用 Guppy?)
我记得读到很难确定 Python 中对象的确切内存使用情况。但是,该线程是从 2009 年开始的,从那时起我已经阅读了 Python 中的各种内存分析器(请参阅此线程中的示例)。另外,IPython 近几个月已经成熟了很多(1.0 版本前几天发布)
IPython 已经有一个叫做 的魔法 whos
,它打印变量名、它们的类型和一些基本的数据/信息。
以类似的方式,有没有办法获得每个返回的对象的内存大小who
?IPython 中是否有任何可用于此目的的实用程序?
使用孔雀鱼
Guppy (在此线程中建议)有一个命令,允许获取每个对象类型的累积内存使用量,但不幸的是:
- 它不显示每个对象的内存使用情况
- 它以字节为单位打印大小(不是人类可读的格式)
对于第二个,可能可以bytes2human
从此答案申请,但我需要首先以h.heap()
我可以解析的格式收集输出。
但是对于第一个(最重要的),有没有办法让 Guppy 显示每个对象的内存使用情况?
python - python:如何确定字典来自哪个文件?
我正在尝试调试内存泄漏。它是一个作为守护进程运行的脚本,并且依赖于 30 个不同文件中的大约 10K 行代码。一段时间后,您会看到内存使用量开始攀升。
我用 heapy 来确定它是一个正在增长的字典,但是我怎样才能找出该字典所在的文件呢?
python - 带有 Python 2.7.6 的 Windows 上的 Guppy/Heapy
我刚刚安装了 guppy 0.1.10。然后输入 Ipython 2.1.0
使控制台崩溃,即 Windows 告诉我,python.exe 刚刚崩溃。有什么解决方法吗?还是有很多替代品?
python - 在 python heapy / guppy 中展开截断的对象视图
我的 django 应用程序中存在内存泄漏,并使用 heapy 来调试内存堆栈。我相信我终于找到了问题的原因。现在我需要一种方法来扩展字符串的截断表示,以便识别源。有没有办法在孔雀鱼中做到这一点?
一组 1 个对象。总大小 = 4831096 字节。索引大小 % 累积 % 表示(有限) 0 4831096 100.0
4831096 100.0 u'< {"to...]}}}]}}}'
这就是我目前正在做的
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 看不到我知道的内存,我就不能相信它会看到泄漏的位置。以它泄漏的速度,几乎可以肯定是成批的图像导致了它。
我正在使用threading
python 中的模块来启动加载器和预处理器线程。我试过print h.heap()
从线程代码和主代码中调用,结果都一样。