獲得CPU利用率(python呼叫top命令實現

2022-02-10 06:34:56 字數 1709 閱讀 4215

本文定位:想通過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.py 

1328109437 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...