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)文章
利用Python繪制MySQL數(shù)據(jù)圖實(shí)現(xiàn)數(shù)據(jù)可視化
這篇文章主要介紹了利用Python繪制MySQL數(shù)據(jù)圖實(shí)現(xiàn)數(shù)據(jù)可視化,其中包括Python與MySQL的連接搭建、用Python執(zhí)行MySQL語(yǔ)句查詢(xún)等內(nèi)容,需要的朋友可以參考下2015-03-03
如何使用Python判斷應(yīng)用是否處于已打包狀態(tài)
在使用 PyInstaller 打包 Python 應(yīng)用時(shí),有時(shí)需要在代碼中判斷程序是否處于“打包狀態(tài)”,本文將介紹幾種方法來(lái)判斷是否處于打包狀態(tài),感興趣的可以了解下2025-03-03
如何通過(guò)python代碼根據(jù)模板修改變量生成新yaml文件
有些時(shí)候,需要根據(jù)一個(gè)yaml模板創(chuàng)建多個(gè)yaml文件實(shí)例,我們先寫(xiě)一個(gè)yaml文件模板,然后通過(guò)python代碼修改模板中的變量,存儲(chǔ)為一個(gè)新的yaml文件,需要配合python的庫(kù)Template及ymal使用,本文給大家講解的非常詳細(xì),需要的朋友跟隨小編一起看看吧2023-11-11
Python數(shù)據(jù)容器dict(字典)的實(shí)現(xiàn)
本文主要介紹了Python數(shù)據(jù)容器dict(字典)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02

