问题标签 [guppy]

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 投票
3 回答
4404 浏览

python - guppy 报告的内存使用情况与 ps 命令不同

我正在分析我扭曲的服务器。它使用的内存比我预期的要多得多。它的内存使用量随着时间的推移而增长。

如您所见,它的成本为 102176 KB,即99.78125 MB。我使用来自扭曲沙井的孔雀鱼来观察内存使用情况。

哼……好像有什么不对。Guppy 显示内存的总使用量为 10096636 字节,即9859.996 KB9.628 MB

这是一个巨大的差异。这个奇怪的结果有什么问题?我究竟做错了什么?

更新: 我昨晚写了一个监控脚本。它记录了内存使用情况和在线用户数。它是一个广播服务器,因此您可以看到有广播和总听众。这是我用matplotlib生成的图。 替代文字

有什么奇怪的。有时候ps打印出来的内存使用率很低,像这样

内存使用率超低的原因是什么?更重要的是,即使没有在线收音机,没有听众,内存使用率仍然很高。

0 投票
1 回答
2774 浏览

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

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

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

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

使用孔雀鱼

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

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

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

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

0 投票
1 回答
1456 浏览

python - Python 27 无法从 guppy 导入共享对象

我通过“sudo python setup.py install”从它的 svn#95 安装了 guppy 内存分析器。

它看起来正确安装。

但我仍然无法导入它。Guppy 的 Python 源代码会执行此导入,因此它应该会成功。

我的问题是,Python 显然试图在正确的位置导入文件。为什么失败了?是因为 .so 文件损坏了吗?还是我的 ld.so.cache 不知何故坏了?谢谢!

0 投票
1 回答
87 浏览

django - 每个请求的 django.dispatch.saferef.BoundMethodWeakRef 对象泄漏导致内存泄漏

django webapp 正在泄漏内存。我在这里尝试过建议:https ://docs.djangoproject.com/en/dev/faq/models/#why-is-django-leaking-memory即使该应用程序不是独立的。

我使用 guppy (通过关注这个漂亮的页面:http ://www.smira.ru/wp-content/uploads/2011/08/heapy.html )来分析堆,我看到了请求和 django 泄漏之间的相关性.dispatch.saferef.BoundMethodWeakRef 对象:

请注意,每次请求时 django.dispatch.saferef.BoundMethodWeakref 的计数都会增加(此处为 775)。

我对 django 有点陌生,但我认为在这个应用程序中做的不同的是,使用自定义中间件类向 process_request 中的每个请求对象添加对对象的引用和标志。我不确定引用是否导致 django 无法以某种方式释放请求的资源。

这是引用和标志上的代码标记:

有谁知道这可能是什么原因造成的?如果是添加到请求中的引用导致了这种情况,我在哪里可以清理?也许通过保留对请求对象的引用并在处理下一个请求时删除对设备对象的引用?

0 投票
0 回答
75 浏览

python - 在 OS X 中安装 apptrace 用于调试 GAE 应用内存,错误:pkg_resources.DistributionNotFound: apptrace==0.2.3

我正在尝试在 OS X 上安装和使用 apptrace 以调试 GAE 内存......这很复杂,我仍然没有设法安装它。

文档说这是最简单的安装方法:

easy_install apptrace

但为了让它工作,我必须安装一堆依赖项,如 ActiveState、Guppy 以及可能更多......

后来经历了很多试验和错误,我想我已经走了很远,但仍然没有。所以我这样做是为了尝试重新安装 apptrace,然后安装它以捕获过程中的所有错误:

然后安装

看起来没有发生任何错误对吧?

然后文档建议在应用程序根目录中创建一个 appengine_config.py 文件,其中包含:

完成后,下一个必需的步骤是:

这会发生:

所以这里的错误是pkg_resources.DistributionNotFound: apptrace==0.2.3 我该怎么办?

0 投票
1 回答
333 浏览

python - 使用 matplotlib.collection.LineCollection 时的内存泄漏

我正在使用以下代码创建一组颜色编码的线图:

在哪里:

不知何故,这个循环使用了大量内存(> ~10GB),在保存绘图后仍在使用。我用 hpy 查看内存使用情况

此时情节已经保存,因此所有与 matplotlib 相关的对象都应该消失了……但我无法“找到”这些对象,这意味着我不知道如何删除它们。

编辑:

这是一个重现泄漏的独立示例(savefig 由于某种原因引发错误,但无论如何都不相关):

draw() 函数应该删除所有 plt 对象,但在调用函数后它们仍然会占用内存。我只是用 top/htop 检查它!

0 投票
1 回答
2426 浏览

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

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

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

0 投票
1 回答
7265 浏览

python - 从 Guppy 获取当前内存使用情况的简单方法

tl/dr:如何使用 Guppy 获取我的 python 程序的当前内存使用情况?有简单的命令吗?

我正在尝试使用 guppy 跟踪 python 程序中的内存使用情况。这是我第一次使用 guppy,所以我不太确定它的行为方式。我想要的是能够在模拟中随着“时间”的进展绘制总使用量。这是我可以做的基本代码:

但我只想知道当前大小是多少(12530016 字节)。所以我希望能够调用类似的东西h.total()来获取总大小。如果这不作为一个简单的命令存在,我会感到震惊,但到目前为止,查看文档我还没有找到它。它可能已记录在案,只是不是我正在寻找的地方。

0 投票
4 回答
16321 浏览

python - 无法绘制图形:绘制需要 matplotlib

我能够生成 *.dat 文件:

但是当我试图绘制图形时,它会说“绘制需要matplotlib”

我错过了什么吗?

我正在分析的函数是 run(),它在里面:file_to_be_profiled.py

我正在从我的测试脚本中调用 run():test_sl.py:

我在 ubuntu 机器上运行。但是 apt-get install 对我不起作用。然后我从源代码安装。但是我也遇到了同样的错误。

apt-get 失败:

然后我尝试了 pip install... 也没有通过:

最后我尝试从似乎成功的源安装:

但是当我尝试绘制图表时,我遇到了原始问题:

我能够成功地进行 apt-get 更新(有一些防火墙问题,然后我成功地做到了:sudo apt-get install -y python-matplotlib.

但是我在运行 mprof 时仍然遇到一些问题:

为什么需要设置显示?我正在使用 ubuntu 托管机器。

0 投票
1 回答
580 浏览

python - 无法绘制图表

我能够生成 *.dat 文件。发布当我尝试使用 mprof 绘制图形时,它抛出异常:

我在 ubuntu 托管的 VM 上运行此命令。