本文定位:想通過python調用top命令獲取cpu使用率但暫時沒有思路的情況。
如果單純為了獲得cpu的利用率,通過top命令重定向可以輕松實現,命令如下:
top -bi > cpuHistory.log
或
top -bi | tee? cpuHistory.log
這個就不解釋了,不懂的朋友查詢下top的幫助文檔。這里要實現的是通過python調用top命令,并獲得cpu的利用率信息。
用過popen的朋友很快就能想到類似如下的代碼(這個是我第一次寫的代碼,*_*):
#! /usr/bin/python
import os,time
time2sleep = 1.5
while True:
??????? print os.popen('top -bi -n 1').read().split('\n')[2]
??????? time.sleep(time2sleep)
原理看起來沒錯,可是跑起來就出問題了:cpu的idle值一直不變?。。?
原因在于執行的命令“top -bi -n 1”:單獨執行這個命令,你會發現輸出結果中cpu的idle值就是一直不變的。
所以不能這樣寫……
在終端執行“top -bi -n 2”命令,你會發現第二個值每次都在變化,這個就是我們想要結果。
考慮到時間問題,命令這樣寫會更好:“top -bi -n 2 -d 0.02”
代碼如下:
#! /usr/bin/python
'''
?? File????? : cpuRate.py
?? Author??? : Mike
?? E-Mail??? : Mike_Zhang@live.com
?'''
import os,time
time2sleep = 2.5
while True:
??????? print int(time.time()),
??????? print os.popen('top -bi -n 2 -d 0.02').read().split('\n\n\n')[1].split('\n')[2]
??????? 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
好,就這些了,希望對你有幫助。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
