本文定位:想通過python呼叫top命令獲取cpu使用率但暫時沒有思路的情況。
測試環境:centos 6.0_x64 + python 2.6
如果單純為了獲得cpu的利用率,通過top命令重定向可以輕鬆實現,命令如下:
top -bi > cpuhistory.log或top -bi | tee cpuhistory.log
這個就不解釋了,不懂的朋友查詢下top的幫助文件。這裡要實現的是通過python呼叫top命令,並獲得cpu的利用率資訊。
用過popen的朋友很快就能想到類似如下的**(這個是我第一次寫的**,*_*):
1#! /usr/bin/python23
import os,time
45 time2sleep = 1.5
6while true:
7print os.popen('
top -bi -n 1
').read().split('
\n')[2]
8 time.sleep(time2sleep)
原理看起來沒錯,可是跑起來就出問題了:cpu的idle值一直不變!!!
原因在於執行的命令「top -bi -n 1」:單獨執行這個命令,你會發現輸出結果中cpu的idle值就是一直不變的。
所以不能這樣寫……
在終端執行「top -bi -n 2」命令,你會發現第二個值每次都在變化,這個就是我們想要結果。
考慮到時間問題,命令這樣寫會更好:「top -bi -n 2 -d 0.02」
**如下:
1#! /usr/bin/python
2'''
3file : cpurate.py
4author : mike
5e-mail : [email protected]
6'''
7import os,time
89 time2sleep = 2.5
10while true:
11print int(time.time()),
12print os.popen('
top -bi -n 2 -d 0.02
').read().split('
\n\n\n
')[1].split('
\n')[2]
13 time.sleep(time2sleep)
執行效果如下:
$ ./cpurate.py1328109437 cpu(s): 10.0%us, 20.0%sy, 0.0%ni, 70.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
1328109441 cpu(s): 0.0%us, 16.7%sy, 0.0%ni, 83.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
1328109444 cpu(s): 0.0%us, 16.7%sy, 0.0%ni, 83.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
1328109447 cpu(s): 12.5%us, 12.5%sy, 0.0%ni, 75.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
好,就這些了,希望對你有幫助。
cpu利用率 CPU利用率錯誤
cpu利用率 cpu利用率是每個人用來衡量處理器效能的指標。netflix的高階效能架構師布倫丹 格雷格 brendan gregg 在第16屆年度南加州linux expo scale 上稱其為 五分鐘公共服務公告 但 cpu卻是一種誤導性的衡量指標,說明處理器的實際繁忙程度。布倫丹在他的閃電演講...
獲得CPU利用率(python呼叫top命令實現
本文定位 想通過python呼叫top命令獲取cpu使用率但暫時沒有思路的情況。如果單純為了獲得cpu的利用率,通過top命令重定向可以輕鬆實現,命令如下 top bi cpuhistory.log 或top bi tee cpuhistory.log 這個就不解釋了,不懂的朋友查詢下top的幫助文...
用Pdh庫獲得CPU利用率
猛然碰到這個問題,在網上找了一些資料,現在綜合一下,希望說的更明白。一 api介紹 1 pdhopenquery 獲取效能監視器資料查詢控制代碼 query 2 pdhaddcounter 新增計數器 3 pdhcollectquerydata 查詢效能監視器資料 4 pdhgetformatted...