是否有可能从Python获得内存使用的“高水位线”?

时间:2011-05-28 01:13:13

标签: python macos memory-management

(C)Python中是否有任何方法可以检查进程的当前内存使用情况?特别是,我想在测试脚本中确定内存使用的高水位标记,但如果有必要,我不介意定期检查内存使用情况并为自己计算高水位线。

编辑:我正在寻找一个纯Python解决方案,或者适用于OS X的东西。

4 个答案:

答案 0 :(得分:4)

查看我对this question的回答。它使用标准库的getrusage()模块中的resource函数,适用于Mac OS X.

答案 1 :(得分:2)

在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)检查内存的限制,那么您可能会很高兴。如果您不了解检查内存使用的限制,请务必查看Virt输出中ResShrtop(1)列的含义。 :)

答案 2 :(得分:1)

您可以使用os.getpid()获取当前的PID,然后使用该PID在调用top / free / ps等子进程的输出中查找进程

我不是OSX / BSD专家,因此我不确定哪个命令将通过进程为您提供内存使用的标志

答案 3 :(得分:0)

MacosX可以使用vmmapvmmap64来访问信息。我不是识字python,但我想你应该能够打开一个管道到子进程以某种方式读取输出。

编辑:可以找到一些额外的非python信息here