如何获取进程的内存使用百分比?

How to get the percentage of memory usage of a process?

使用下面的代码,我可以获得给定进程的内存消耗,以 MiB 为单位:

def memory_usage_psutil():
    # return the memory usage in MB
    import psutil
    process = psutil.Process(os.getpid())
    mem = process.get_memory_info()[0] / float(2 ** 20)
    return mem

如何将其更改为 return 内存消耗百分比?

更新: 我需要在终端中为特定进程执行top命令时获取%MEM列的当前值。

示例:我需要此函数return 14.2 用于 VirtualBox 进程的进程 ID。

使用process.memory_percent()

这与top一致。在下面的测试脚本中,您可以将参数更改为定义 consume_memory 数组的 range 函数,它只用于测试内存,并且 python 输出和 top 输出都将匹配:

import os
import psutil

def memory_usage_psutil():
    # return the memory usage in percentage like top
    process = psutil.Process(os.getpid())
    mem = process.memory_percent()
    return mem

consume_memory = range(20*1000*1000)

while True:
    print memory_usage_psutil()

import os
import sys
import psutil


for id in psutil.pids():
    p = psutil.Process(id)
    if ( p.name() == 'firefox' ):
        print("id of firefox process : " + str(id))
        mem = p.memory_percent()
        print ("Memory Perentage for Firefox process is " + str(mem))