12

使用以下代码,我可以获得 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

如何更改它以返回内存消耗百分比?

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

示例:我需要此函数为 VirtualBox 进程的进程 ID 返回 14.2。

在此处输入图像描述

4

2 回答 2

18

采用process.memory_percent()

这与顶部一致。在下面的测试脚本中,您可以将参数更改为定义consume_memory数组的 range 函数,该函数仅用于耗尽内存进行测试,python 输出和顶部输出都会匹配:

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()

pythonVstop

于 2015-05-03T13:53:30.357 回答
1
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))
于 2015-05-05T06:31:53.483 回答