1. 程式人生 > >[Python Study Notes]psutil模塊

[Python Study Notes]psutil模塊

reads kill buffers 發送數據包 系統性能 bsd 功能 virt share

系統性能信息模塊psutil

psutil是一個跨平臺庫,能夠輕松實現獲取系統運行的進程和系統利用率(CPU,內存,磁盤,網絡等)信息,主要應用於系統監控,分析和限制系統資源及進程的管理,它實現了同等命令行工具提供的功能,如ps,top,lsof,netstat,ifconfig,who,df,kill,free,nice等.支持32位,和64位的Linux,Windows,OS X,FreeBSD等操作系統。

1 cpu信息
#Linux系統cpu利用率有以下幾個部分
#User Time,執行用戶進程的時間百分比
#System Time,執行內核進程和中斷的時間百分比
#Wait IO,由於IO等待使cpu處於idle(空閑)狀態的時間百分比
#Idle,cpu處於空閑狀態的時間百分比
 
>>> import psutil
#獲取cpu完成信息
>>> psutil.cpu_times()
scputimes(user=29.36, nice=0.0, system=26.59, idle=9619.35, iowait=64.78, irq=0.5, softirq=1.67, steal=0.0, guest=0.0)
 
#獲取用戶user的cpu時間比
>>> psutil.cpu_times().user
34.54
 
#獲取cpu邏輯個數
>>> psutil.cpu_count()
4
 
#獲取cpu物理個數
>>> psutil.cpu_count(logical=False)
4
 
2 內存信息
#Linux系統的內存利用率信息涉及
#total 內存總數
#used 已使用的內存數
#free 空閑內存數
#buffers 緩沖使用數
#cache 緩存使用數
#swap 交換分區使用數 等
#使用 psutil.virtual_memory()與psutil.memory()方法獲取
 
#獲取內存完整信息
>>>mem = psutil.virtual_memory()
>>> mem
svmem(total=1961488384, available=1483986944, percent=24.3, used=341475328, free=941473792, active=677801984, inactive=212774912, buffers=32038912, cached=646500352, shared=4116480)
 
#獲取內存總數
>>> mem.total
1961488384
 
#獲取空閑內存數
>>> mem.free
941473792
 
#獲取SWAP分區信息
>>> psutil.swap_memory()
sswap(total=2147475456, used=0, free=2147475456, percent=0.0, sin=0, sout=0)
 
3 磁盤信息
#磁盤利用率使用psutil.disk_usage()方法獲取
#IO信息 
#read_count 讀IO數
#write_count 寫IO數
#read_bytes IO讀字節數
#write_bytes IO寫字節數
#read_time 磁盤讀時間
#write_time 磁盤寫時間
#使用psutil.disk_io_counters()獲取
 
#獲取磁盤完整信息
>>> psutil.disk_partitions()
[sdiskpart(device=‘/dev/sda3‘, mountpoint=‘/‘, fstype=‘ext4‘, opts=‘rw‘), sdiskpart(device=‘/dev/sda1‘, mountpoint=‘/boot‘, fstype=‘ext4‘, opts=‘rw‘)]
 
#獲取/分區使用情況
>>> psutil.disk_usage(‘/‘)
sdiskusage(total=18506760192, used=4438568960, free=13128093696, percent=25.3)
 
#獲取硬盤總IO數
>>> psutil.disk_io_counters()
 
4 網絡信息
#bytes_sent 發送字節數
#bytes_recv 接收字節數
#packets_sent 發送數據包數
#packest_recv 接收數據包數
#使用psutil.net_io_counters()獲取
>>> psutil.net_io_counters()
 
 
5 其他系統信息
#psutil模塊還支持獲取用戶登錄,開機時間等信息
#顯示當前登錄系統的用戶信息
>>> psutil.users()
 
#獲取開機時間
>>> psutil.boot_time()


系統進程管理方法

psutil在獲取進程信息方面也提供了很好的支持,包括使用psutil.pids()方法獲取所有PID,使用psutil.Process()方法獲取單個進程的名稱,路徑,系統資源利用率等信息。

#列出所有進程的PID
>>> psutil.pids()
 
#實例化一個Process對象,參數為一個PID
>>>p = psutil.Process(3197)
 
#進程名
>>> p.name()
‘python3‘
 
#進程bin路徑
>>> p.exe()
‘/opt/python3/bin/python3.5‘
 
#進程工作絕對路徑
>>> p.cwd()
 
#進程狀態
>>> p.status()
 
#進程創建時間
>>> p.create_time()
 
#uid信息
>>> p.uids()
 
#gid信息
>>> p.gids()
 
#進程cpu時間,包括user,system兩個時間
>>> p.cpu_times()
 
#進程內存利用率
>>> p.memory_percent()
 
#進程內存rss,vms信息
>>> p.memory_info()
 
#進程IO信息
>>> p.io_counters()
 
#進程開啟的線程數
>>> p.num_threads()


[Python Study Notes]psutil模塊