使用 Valgrind 在 Python 程序中分析内存时遇到问题

Posted

技术标签:

【中文标题】使用 Valgrind 在 Python 程序中分析内存时遇到问题【英文标题】:Having problems profiling memory in Python program using Valgrind 【发布时间】:2011-06-20 15:46:06 【问题描述】:

我已经查看了一些关于在 Python 程序中分析内存使用情况的问题,但到目前为止还没有任何工作可以解决。我的程序必须以 root 身份运行(它会打开一个 TUN/TAP 设备)。

首先,我尝试了heapy;不幸的是,这对我不起作用。每次我的代码尝试执行hpy().heap() 时,程序都会冻结。不想浪费太多时间,我决定尝试 valgrind。

我用地块尝试了 valgrind:

# valgrind --tool=massif ./my_prog.py --some-options value

我认为这个问题与分析 Python 程序有关。我尝试了我的程序(以 root 身份运行)并且没有生成任何地块输出文件。我也无法使用另一个 Python 程序(不以 root 身份运行)生成输出文件。但是,一个简单的 C 测试程序运行良好并生成了 massif 文件。

阻碍 Valgrind 和 massif 与 Python 程序正常工作的问题是什么?

【问题讨论】:

调用 python bin 并将脚本作为参数传递会有什么不同吗? @tMC,在我阅读您的评论之前,我也在想同样的事情。事实上,它确实有所作为。 【参考方案1】:

无需让脚本启动解释器,而是直接将其作为参数调用到 Valgrind 即可解决问题。

valgrind --tool=massif python my_script.py

【讨论】:

以上是关于使用 Valgrind 在 Python 程序中分析内存时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在 python 中使用 valgrind?

C++内存检查工具valgrind

C++内存检查工具valgrind

在 PyCharm 中分析 python 时内存使用率非常高

如何在基于 Qt 的应用程序中正确使用 valgrind

Unix下C程序内存泄露检测工具:valgrind的安装使用