2014-09-23 39 views
1

我喜欢使用这些命令上看到我的服务器我的内存使用情况:如何衡量用户的所有进程的内存使用总量在Python

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

什么将收集总和的最佳方式在Python脚本中?我看起来像psutil,但该模块仅收集全局内存信息,无法由用户过滤。

+0

你关心平台依赖吗? – wnnmaw 2014-09-23 15:12:49

回答

2

这很简单,使用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) 
+0

非常感谢!这将我推向了正确的方向。使用这样的列表理解是行不通的,因为对于某些进程,memory_info()会抛出一个'AccessDenied'错误,所以我只写了一个正常循环,并在其中放置了一个try-catch块。 – mbrochh 2014-09-24 03:05:34

相关问题