可以从Python获取内存使用的“高水位线”吗?
有没有什么方法可以查看当前进程的内存使用情况呢?特别是,我想知道在一个测试脚本中内存使用的最高点是多少。如果有必要,我也可以定期检查内存使用情况,然后自己计算出这个最高点。
补充说明:我希望找到一个纯Python的解决方案,或者是可以在OS X系统上使用的东西。
4 个回答
1
你可以用 os.getpid()
来获取你当前程序的进程ID(PID),然后用这个PID去查找在使用 top
、free
或 ps
等命令时显示的进程信息。
我对OSX/BSD不是很懂,所以不太确定哪个命令的哪个选项可以让你看到每个进程的内存使用情况。
3
在Linux系统中,你可以查看一个叫做 /proc/self/status
的文件:
VmPeak: 6784 kB
VmSize: 6784 kB
VmLck: 0 kB
VmHWM: 572 kB
VmRSS: 572 kB
VmData: 180 kB
VmStk: 136 kB
VmExe: 44 kB
VmLib: 1640 kB
VmPTE: 36 kB
VmSwap: 0 kB
你可能最关心的就是 VmPeak
这一行。不过,如果你用 mmap(2)
方法打开一个一千兆字节大小的文件,即使你只用到这个文件中的三四页,系统也可能会显示你使用了超过一千兆字节的内存。
如果你知道通过 top(1)
或 ps(1)
查看内存使用情况的局限性,那你就可以继续了。如果你对查看内存使用情况的局限性不太了解,那就一定要看看 top(1)
输出中的 Virt
、Res
和 Shr
这几列的含义哦。:)
5
看看我对这个问题的回答。我的回答使用了标准库中的resource
模块里的getrusage()
函数,这个方法在Mac OS X上可以使用。