Linux下使用python調(diào)用top命令獲得CPU利用率
本文定位:想通過(guò)python調(diào)用top命令獲取cpu使用率但暫時(shí)沒(méi)有思路的情況。
如果單純?yōu)榱双@得cpu的利用率,通過(guò)top命令重定向可以輕松實(shí)現(xiàn),命令如下:
top -bi > cpuHistory.log
或
top -bi | tee cpuHistory.log
這個(gè)就不解釋了,不懂的朋友查詢(xún)下top的幫助文檔。這里要實(shí)現(xiàn)的是通過(guò)python調(diào)用top命令,并獲得cpu的利用率信息。
用過(guò)popen的朋友很快就能想到類(lèi)似如下的代碼(這個(gè)是我第一次寫(xiě)的代碼,*_*):
#! /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)
原理看起來(lái)沒(méi)錯(cuò),可是跑起來(lái)就出問(wèn)題了:cpu的idle值一直不變?。?!
原因在于執(zhí)行的命令“top -bi -n 1”:?jiǎn)为?dú)執(zhí)行這個(gè)命令,你會(huì)發(fā)現(xiàn)輸出結(jié)果中cpu的idle值就是一直不變的。
所以不能這樣寫(xiě)……
在終端執(zhí)行“top -bi -n 2”命令,你會(huì)發(fā)現(xiàn)第二個(gè)值每次都在變化,這個(gè)就是我們想要結(jié)果。
考慮到時(shí)間問(wèn)題,命令這樣寫(xiě)會(huì)更好:“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)
執(zhí)行效果如下:
$ ./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
好,就這些了,希望對(duì)你有幫助。
相關(guān)文章
在pycharm中運(yùn)行js文件以及附加node.js下載步驟
js文件需要用node來(lái)運(yùn)行,所以首先要安裝node軟件,下面這篇文章主要給大家介紹了關(guān)于在pycharm中運(yùn)行js文件以及附加node.js下載步驟的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12Python?GUI和游戲開(kāi)發(fā)從入門(mén)到實(shí)踐
GUI是圖形用戶(hù)界面的縮寫(xiě),圖形化的用戶(hù)界面對(duì)使用過(guò)計(jì)算機(jī)的人來(lái)說(shuō)應(yīng)該都不陌生,下面這篇文章主要給大家介紹了關(guān)于Python圖形用戶(hù)界面與游戲開(kāi)發(fā)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05Python實(shí)現(xiàn)生成隨機(jī)數(shù)據(jù)插入mysql數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了Python實(shí)現(xiàn)生成隨機(jī)數(shù)據(jù)插入mysql數(shù)據(jù)庫(kù)的方法,涉及Python隨機(jī)字符串生成及數(shù)據(jù)庫(kù)連接、插入等相關(guān)操作技巧,需要的朋友可以參考下2017-12-12使用 Python 快速實(shí)現(xiàn) HTTP 和 FTP 服務(wù)器的方法
這篇文章主要介紹了使用 Python 快速實(shí)現(xiàn) HTTP 和 FTP 服務(wù)器 的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07Python處理PPT文件的實(shí)用知識(shí)點(diǎn)總結(jié)
python是一門(mén)很強(qiáng)大的語(yǔ)言,因?yàn)橛兄S富的第三方庫(kù),所以可以說(shuō)Python是無(wú)所不能的,下面這篇文章主要給大家介紹了關(guān)于用Python提取PPT中圖片的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01Pygame游戲開(kāi)發(fā)之太空射擊實(shí)戰(zhàn)碰撞改進(jìn)篇
相信大多數(shù)8090后都玩過(guò)太空射擊游戲,在過(guò)去游戲不多的年代太空射擊自然屬于經(jīng)典好玩的一款了,今天我們來(lái)自己動(dòng)手實(shí)現(xiàn)它,在編寫(xiě)學(xué)習(xí)中回顧過(guò)往展望未來(lái),在本課中,我們將討論如何更改?Pygame?處理精靈之間沖突的方式2022-08-08python中g(shù)etaddrinfo()基本用法實(shí)例分析
這篇文章主要介紹了python中g(shù)etaddrinfo()基本用法,實(shí)例分析了Python中使用getaddrinfo方法進(jìn)行IP地址解析的基本技巧,需要的朋友可以參考下2015-06-06