0

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

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

4

2 回答 2

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)
于 2012-12-23T18:48:44.957 回答
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可能不同,请查看手册页。

于 2012-12-23T18:31:33.133 回答