处理内存使用输出

时间:2012-12-23 16:49:25

标签: python linux memory-management process

我想知道如何在所有情况下以MB为单位获取进程的驻留内存使用情况。有时我会用MB获得它,但有时候它会以GB为单位。

我确实四处寻找解决方案,但大多数都没有用。可以在top -b -n 1 | grep %i | awk '{print$9}'中使用的东西会很棒。

2 个答案:

答案 0 :(得分:2)

如果您想避免使用子流程,可以查看psutil库。

如果您只是在单个流程上查找信息,那么这是一个示例:

import psutil

pid = 14551

def rss_MB(pid):
    proc = psutil.Process(pid)
    mem_bytes = proc.get_memory_info().rss
    return( float(mem_bytes)/1048576 )

mem_MB = rss_MB(pid)
print "pid: %d has an rss of %f MB" % (pid, mem_MB)

答案 1 :(得分:0)

一个例子:

import subprocess

lines = subprocess.check_output(['ps', '-xacuww']).splitlines()
del lines[0] # skip the header
for p in lines:
    items = p.split()
    print "Process:", items[-1], " memory:", items[5], "kB"

这是在FreeBSD上编写的,其中RSS大小以kB报告。 Linux上ps的选项可能不同,请查看手册页。