【问题标题】:How to measure total memory usage of all processes of a user in Python如何在 Python 中测量用户所有进程的总内存使用量
【发布时间】:2014-09-23 15:08:24
【问题描述】:

我喜欢使用这些命令来查看我的服务器上的内存使用情况:

ps -u $USERNAME -o pid,rss,command | awk '{print $0}{sum+=$2} END {print "Total", sum}'

在 Python 脚本中收集总和的最佳方法是什么?我查看了 psutil,但该模块仅收集全局内存信息,无法按用户过滤。

【问题讨论】:

  • 你在乎平台依赖吗?

标签: python memory metrics


【解决方案1】:

使用psutil 非常简单。您可以遍历所有进程,选择您拥有的进程并将memory_info() 返回的内存相加。

import psutil
import getpass

user = getpass.getuser()

total = sum(p.memory_info()[0] for p in psutil.process_iter()
                               if p.username() == user)

print('Total memory usage in bytes: ', total)

【讨论】:

  • 非常感谢!这将我推向了正确的方向。使用这样的列表解析是行不通的,因为对于某些进程memory_info() 会抛出AccessDenied 错误,所以我只是编写了一个普通循环并在其中放置了一个 try-catch 块。
猜你喜欢
  • 2012-12-02
  • 2014-08-21
  • 2015-01-07
  • 1970-01-01
  • 2012-09-11
  • 1970-01-01
  • 2019-06-26
相关资源
最近更新 更多