2014-09-23 37 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

相關問題