首頁 > 軟體

基於Python實現實時監控CPU使用率

2022-04-19 10:01:35

導語

哈嘍!大家好,我是木木子!準時上線給大家更新啦!​

Ps:小故事

前兩天有位粉絲朋友在群裡問我說,有沒有不裝一些我們熟知的電腦管理軟體但是依然可以檢視CPU的使用率方法,或者能夠介紹一款比較給力的小外掛也好。確實,在生活中有不少人是不喜歡裝那些管理軟體的。

今天,木木子就給大家介紹一款手寫程式設計程式碼的小指令碼,能夠輕鬆在介面上展示:利用Python實時監控CPU使用率,隨時展現。也無需下載管理軟體,幾十行程式碼即可搞定~

一、模組簡介

1.0 關於模組的詳細用法參考

psutil檔案

matplotlib檔案

1.1 用到psutil模組

小介紹:

psutil是一個跨平臺庫(code.google.com/p/psutil/)

括CPU、記憶體、磁碟、網路等)資訊。它主要應用於系統監控,分析和限制系統資源及程序的管理。

它實現了同等命令列工具提供的功能,如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等作業系統。

1.2 用到matplotlib模組

小介紹:

Matplotlib 是一個 Python 的 2D繪相簿,它以各種硬拷貝格式和跨平臺的互動式環境生成出版質量級別的圖形。

通過 Matplotlib,開發者可以僅需要幾行程式碼,便可以生成繪圖,直方圖,功率譜,條形圖,錯誤圖,散點圖等。

二、準備中

2.1 相關環境

**Python3.6、Pycharm。****相關模組:**matplotlib模組;psutil模組。

2.2 安裝

這裡小編統一使用:pip install -i pypi.douban.com/simple/+模組名

三、開始敲程式碼

3.1 程式碼內容

利用Python實時監控CPU使用率:

  • 執行使用者程序
  • 執行核心程序和中斷
  • CPU處於空閒狀態

主要是這三個方面的程式碼編寫過程。

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)
# 執行使用者程序的時間百分比
user = [None] * POINT
# 執行核心程序和中斷的時間百分比
sys = [None] * POINT
# CPU處於空閒狀態的時間百分比
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()

四、效果展示

靜態截圖展示——

到此這篇關於基於Python實現實時監控CPU使用率的文章就介紹到這了,更多相關Python監控CPU內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com