【问题标题】:How to get the percentage of memory usage of a process?如何获取进程的内存使用百分比?
【发布时间】:2015-07-12 21:41:52
【问题描述】:

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

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

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

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

【问题讨论】:

  • 提供您对“内存消耗百分比”的定义将使您需要做的事情更加明显。
  • @JonathonReinhart 更新了我的问题。
  • 同样,提供该值的定义将引导您找到答案。简单来说,这意味着什么? 占什么比例
  • @JonathonReinhart 添加了一个示例

标签: python linux psutil


【解决方案1】:

使用process.memory_percent()

这与顶部一致。在下面的测试脚本中,您可以将参数更改为定义consume_memory数组的范围函数,该数组仅用于耗尽内存进行测试,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()

【讨论】:

    【解决方案2】:
    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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-27
      • 1970-01-01
      • 1970-01-01
      • 2012-05-22
      相关资源
      最近更新 更多