psutil是一個跨平台庫,能夠輕松實現獲取系統運行的進程和系統利用率(CPU,內存,磁盤,網絡等)信息,主要應用於系統監控,分析和限制系統資源及進程的管理,它實現了同等命令行工具提供的功能,如ps,top,lsof,netstat,ifconfig,who,df,kill,free,nice等.支持32位,和64位的Linux,Windows,OS X,FreeBSD等操作系統。
1 1 cpu信息 2 #Linux系統cpu利用率有以下幾個部分 3 #User Time,執行用戶進程的時間百分比 4 #System Time,執行內核進程和中斷的時間百分比 5 #Wait IO,由於IO等待使cpu處於idle(空閑)狀態的時間百分比 6 #Idle,cpu處於空閑狀態的時間百分比 7 8 import psutil 9 #獲取cpu完成信息 10 print psutil.cpu_times() 11 >>> 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) 12 13 print type(psutil.cpu_times()) 14 >>> <class 'psutil._pslinux.scputimes'> 15 # user () 從系統啟動開始累計到當前時刻,用戶態的CPU時間,不包含 nice值為負進程。 16 # nice () 從系統啟動開始累計到當前時刻,nice值為負的進程所占用的CPU時間 17 # system () 從系統啟動開始累計到當前時刻,核心時間 18 # idle () 從系統啟動開始累計到當前時刻,除IO等待時間以外其它等待時間 19 # iowait () 從系統啟動開始累計到當前時刻,IO等待時間 20 # irq () 從系統啟動開始累計到當前時刻,硬中斷時間 21 # softirq () 從系統啟動開始累計到當前時刻,軟中斷時間 22 23 # CPU使用率計算 24 CPU在t1到t2時間段總的使用時間 = ( user2+ nice2+ system2+ idle2+ iowait2+ irq2+ softirq2) - ( user1+ nice1+ system1+ idle1+ iowait1+ irq1+ softirq1) 25 CPU在t1到t2時間段空閑使用時間 = (idle2 - idle1) 26 CPU在t1到t2時間段即時利用率 = 1 - CPU空閑使用時間 / CPU總的使用時間 27 28 # 29 print psutil.cpu_percent(interval=20,percpu=False) 30 >>> 3.7 31 interval:代表時間(秒),在這段時間內的cpu使用率 32 percpu:選擇總的使用率還是每個cpu的使用率。False為總體,True為單個,返回列表 33 34 #獲取cpu邏輯個數 35 print psutil.cpu_count() 36 >>> 56 37 # 計算方式:單個cpu核數*cpu個數*2(cpu cores 這個規格值,如果支持並開啟ht) 38 # ht:intel的超線程技術(HT), 可以在邏輯上再分一倍數量的cpu core出來 39 40 41 #獲取cpu物理個數 42 psutil.cpu_count(logical=False) 43 >>> 28 44 # 計算方式:單個cpu核數*cpu個數
