網(wǎng)站首頁 編程語言 正文
導(dǎo)語
哈嘍!大家好,我是木木子!準(zhǔn)時上線給大家更新啦!?
Ps:小故事
前兩天有位粉絲朋友在群里問我說,有沒有不裝一些我們熟知的電腦管理軟件但是依然可以查看CPU的使用率方法,或者能夠介紹一款比較給力的小插件也好。確實,在生活中有不少人是不喜歡裝那些管理軟件的。
今天,木木子就給大家介紹一款手寫編程代碼的小腳本,能夠輕松在界面上展示:利用Python實時監(jiān)控CPU使用率,隨時展現(xiàn)。也無需下載管理軟件,幾十行代碼即可搞定~
一、模塊簡介
1.0 關(guān)于模塊的詳細(xì)用法參考
psutil文檔
matplotlib文檔
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)截圖展示——
原文鏈接:https://juejin.cn/post/7087883749148327949
相關(guān)推薦
- 2022-06-13 ASP.NET?Core依賴注入(DI)講解_實用技巧
- 2022-09-28 基于OpenCV(python)的實現(xiàn)文本分割之垂直投影法_python
- 2022-06-18 Android自定義彈框Dialog效果_Android
- 2022-02-09 C語言指針用法總結(jié)_C 語言
- 2022-03-14 如何在Git hub上快速查找合適的項目(如何在github上找到自己想要的代碼)
- 2021-12-16 linux下wget命令的基本使用方法_Linux
- 2022-04-04 npm run ...自動打開瀏覽器
- 2022-12-26 matplotlib畫圖之修改坐標(biāo)軸刻度問題_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支