我想知道如何在所有情况下以 MB 为单位获取进程的常驻内存使用情况。有时我以 MB 为单位获得它,但有时它以 GB 为单位。
我确实四处寻找解决方案,但大多数都不起作用。可以做成的东西top -b -n 1 | grep %i | awk '{print$9}'
会很棒。
我想知道如何在所有情况下以 MB 为单位获取进程的常驻内存使用情况。有时我以 MB 为单位获得它,但有时它以 GB 为单位。
我确实四处寻找解决方案,但大多数都不起作用。可以做成的东西top -b -n 1 | grep %i | awk '{print$9}'
会很棒。
如果您想避免使用子进程,可以查看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)
一个例子:
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
可能不同,请查看手册页。