我想知道如何在所有情况下以MB为单位获取进程的驻留内存使用情况。有时我会用MB获得它,但有时候它会以GB为单位。
我确实四处寻找解决方案,但大多数都没有用。可以在top -b -n 1 | grep %i | awk '{print$9}'
中使用的东西会很棒。
答案 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
的选项可能不同,请查看手册页。