检查Windows下Python程序的最大内存使用情况

1 投票
3 回答
2599 浏览
提问于 2025-04-17 12:16

我想在Python程序中获取到一个Python程序使用的最大物理内存(我用的是ActiveState Python 3.2,运行在Windows 7上)。

理想情况下,我希望每隔0.1秒左右就检查一次内存使用情况,如果当前使用的内存超过了之前记录的最大值,就更新这个最大值(这个最大值是存储在某个地方的全局变量)。

更新:

我意识到我的问题和推荐哪个Python内存分析工具?的内容很相似。

抱歉我之前没有说清楚。我有两个具体的问题,按照我的理解,常规的内存分析工具并没有解决:

  1. 我需要查看的不仅仅是Python分配的内存,还要看到Python程序使用的总内存(在Windows下,这还包括DLL等其他内容)。换句话说,在Windows下,这正是你在任务管理器中看到的内容。

  2. 我需要查看的是最大内存,而不是某一时刻的内存使用情况。我想不出其他方法来实现这一点,除了在代码中到处放置许多内存检查,特别是在我认为要分配大内存的地方。

3 个回答

0

这里有一个类似的问题链接:

推荐哪个Python内存分析工具?

我用过Guppy/Heapy和Meliae。这两个工具有点不同,但我发现它们都挺有用的。

1

我没有找到用Python实现我想要的功能的方法。

不过,在玩Windows 7的任务管理器时,我发现可以添加一个“峰值工作集(内存)”的列。所以如果我在Python程序退出之前暂停它(并且捕获main()中的异常来暂停),我就可以在任务管理器中看到峰值内存。

我知道这样做很傻(比如,它不能让我把这个信息打印到日志文件里,也不能让我根据内存使用情况做其他事情等等),但总比没有好。

2

我觉得你可以去控制面板,找到管理工具,然后选择性能,点击‘+’号。在‘性能对象’里选择‘处理器’,在左边的栏目里选择‘池分页字节’或‘池非分页字节’,然后在右边的栏目里选择你的进程。你可以用性能监视器生成一个日志文件。

撰写回答