基于Python實現(xiàn)實時監(jiān)控CPU使用率
導(dǎo)語
哈嘍!大家好,我是木木子!準(zhǔn)時上線給大家更新啦!?
Ps:小故事
前兩天有位粉絲朋友在群里問我說,有沒有不裝一些我們熟知的電腦管理軟件但是依然可以查看CPU的使用率方法,或者能夠介紹一款比較給力的小插件也好。確實,在生活中有不少人是不喜歡裝那些管理軟件的。
今天,木木子就給大家介紹一款手寫編程代碼的小腳本,能夠輕松在界面上展示:利用Python實時監(jiān)控CPU使用率,隨時展現(xiàn)。也無需下載管理軟件,幾十行代碼即可搞定~
一、模塊簡介
1.0 關(guān)于模塊的詳細(xì)用法參考
1.1 用到psutil模塊
小介紹:
psutil是一個跨平臺庫(code.google.com/p/psutil/)
括CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)等)信息。它主要應(yīng)用于系統(tǒng)監(jiān)控,分析和限制系統(tǒng)資源及進(jìn)程的管理。
它實現(xiàn)了同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、
iostat、iotop、uptime、pidof、tty、taskset、pmap等。
目前支持32位和64位的Linux、Windows、OS X、FreeBSD和Sun Solaris等操作系統(tǒng)。
1.2 用到matplotlib模塊
小介紹:
Matplotlib 是一個 Python 的 2D繪圖庫,它以各種硬拷貝格式和跨平臺的交互式環(huán)境生成出版質(zhì)量級別的圖形。
通過 Matplotlib,開發(fā)者可以僅需要幾行代碼,便可以生成繪圖,直方圖,功率譜,條形圖,錯誤圖,散點圖等。
二、準(zhǔn)備中
2.1 相關(guān)環(huán)境
**Python3.6、Pycharm。****相關(guān)模塊:**matplotlib模塊;psutil模塊。
2.2 安裝
這里小編統(tǒng)一使用:pip install -i pypi.douban.com/simple/+模塊名
三、開始敲代碼
3.1 代碼內(nèi)容
利用Python實時監(jiān)控CPU使用率:
- 執(zhí)行用戶進(jìn)程
- 執(zhí)行內(nèi)核進(jìn)程和中斷
- CPU處于空閑狀態(tài)
主要是這三個方面的代碼編寫過程。
3.2 附完整代碼
import matplotlib.pyplot as plt import matplotlib.font_manager as font_manager import psutil as p POINTS = 300 fig, ax = plt.subplots() ax.set_ylim([0, 100]) ax.set_xlim([0, POINTS]) ax.set_autoscale_on(False) ax.set_xticks([]) ax.set_yticks(range(0, 101, 10)) ax.grid(True) # 執(zhí)行用戶進(jìn)程的時間百分比 user = [None] * POINT # 執(zhí)行內(nèi)核進(jìn)程和中斷的時間百分比 sys = [None] * POINT # CPU處于空閑狀態(tài)的時間百分比 idle = [None] * POINT l_user, = ax.plot(range(POINTS), user, label='User %') l_sys, = ax.plot(range(POINTS), sys, label='Sys %') l_idle, = ax.plot(range(POINTS), idle, label='Idle %') ax.legend(loc='upper center', ncol=4, prop=font_manager.FontProperties(size=10)) bg = fig.canvas.copy_from_bbox(ax.bbox) def cpu_usage(): t = p.cpu_times() return [t.user, t.system, t.idle] before = cpu_usage() def get_cpu_usage(): global before now = cpu_usage() delta = [now[i] - before[i] for i in range(len(now))] total = sum(delta) before = now return [(100.0*dt)/(total+0.1) for dt in delta] def OnTimer(ax): global user, sys, idle, bg tmp = get_cpu_usage() user = user[1:] + [tmp[0]] sys = sys[1:] + [tmp[1]] idle = idle[1:] + [tmp[2]] l_user.set_ydata(user) l_sys.set_ydata(sys) l_idle.set_ydata(idle) while True: try: ax.draw_artist(l_user) ax.draw_artist(l_sys) ax.draw_artist(l_idle) break except: pass ax.figure.canvas.draw() def start_monitor(): timer = fig.canvas.new_timer(interval=100) timer.add_callback(OnTimer, ax) timer.start() plt.show() if __name__ == '__main__': start_monitor()
四、效果展示
靜態(tài)截圖展示——
到此這篇關(guān)于基于Python實現(xiàn)實時監(jiān)控CPU使用率的文章就介紹到這了,更多相關(guān)Python監(jiān)控CPU內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python將天數(shù)轉(zhuǎn)換為日期字符串的方法實例
這篇文章主要給大家介紹了關(guān)于python將天數(shù)轉(zhuǎn)換為日期字符串的相關(guān)資料,以及將將字符串的時間轉(zhuǎn)換為時間戳的實例代碼,需要的朋友可以參考下2022-01-01Python使用Rich?type和TinyDB構(gòu)建聯(lián)系人通訊錄
這篇文章主要為大家介紹了Python使用Rich?type和TinyDB構(gòu)建聯(lián)系人通訊錄應(yīng)用程序,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08