有没有办法让 Python 程序确定它当前使用了多少内存?我看过有关单个对象的内存使用情况的讨论,但我需要的是进程的总内存使用情况,以便我可以确定何时有必要开始丢弃缓存数据。
原文由 rwallace 发布,翻译遵循 CC BY-SA 4.0 许可协议
有没有办法让 Python 程序确定它当前使用了多少内存?我看过有关单个对象的内存使用情况的讨论,但我需要的是进程的总内存使用情况,以便我可以确定何时有必要开始丢弃缓存数据。
原文由 rwallace 发布,翻译遵循 CC BY-SA 4.0 许可协议
对于基于 Unix 的系统(Linux、Mac OS X、Solaris),您可以使用标准库模块中的 getrusage()
函数 resource
。生成的对象具有属性 ru_maxrss
,它给出了调用进程的 峰值 内存使用情况:
>>> resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
2656 # peak memory usage (kilobytes on Linux, bytes on OS X)
Python 文档 没有记录单位。请参阅您特定系统的 man getrusage.2
页面以检查值的单位。在 Ubuntu 18.04 上,单位记为千字节。在 Mac OS X 上,它是字节。
getrusage()
也可以给出函数 resource.RUSAGE_CHILDREN
获取子进程的使用情况,以及(在某些系统上) resource.RUSAGE_BOTH
总进程使用情况(自身和子进程) .
如果您只关心 Linux,您也可以阅读 /proc/self/status
或 /proc/self/statm
文件,如这个问题和 这个 问题的其他答案中所述。
原文由 Nathan Craike 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
这 是适用于各种操作系统(包括 Linux、Windows 等)的有用解决方案:
笔记:
执行
pip install psutil
如果尚未安装如果您想快速了解您的过程需要多少 MiB,那么方便的一行代码:
process.memory_info()[0]
(后来 API 发生了变化)。