和win系统不同的是,在Ubuntu端,系统级的系统监视器中,只能查看内存、CPU和网络状态,并不能查看GPU状态
而使用NVIDIA显卡的朋友都知道一条指令
nvidia-smi
在终端运行后即可查看显卡信息、资源占用情况等
但是这样会占用终端,而且想要实时刷新还需要额外的指令,所以就想到利用python程序将其封装进GUI界面中实时刷新显示
import subprocess
import tkinter as tk
from tkinter import font
def update_smi():
smi_output = subprocess.getoutput('nvidia-smi')
text_box.delete(1.0, "end")
text_box.insert("end", smi_output)
root.after(300, update_smi)
root = tk.Tk()
root.title("NVIDIA 资源监控器")
# Set the window size (width x height)
root.geometry("750x420")
# Set the font for the textbox (font family, size, and other attributes)
custom_font = font.Font(family="aakar", size=12)
text_box = tk.Text(root, bg='black', fg='white', font=custom_font)
text_box.pack(expand=True, fill='both')
update_smi()
root.mainloop()
这个程序是一个使用Python编写的图形界面应用,其主要功能是定期监控和显示NVIDIA显卡的状态信息。程序的关键部分包括:
1. 导入必要的库:使用subprocess来运行外部命令,tkinter和tkinter.font用于创建图形界面。
2. 定义update_smi函数:这个函数通过运行nvidia-smi命令获取NVIDIA显卡的当前状态,然后更新显示在文本框中。subprocess.getoutput('nvidia-smi')获取命令输出,text_box.delete(1.0, "end")清除文本框中的旧内容,text_box.insert("end", smi_output)插入新的命令输出。root.after(300, update_smi)实现了每300毫秒自动刷新显示的功能。
3. 初始化Tkinter窗口:通过tk.Tk()创建了一个Tkinter窗口,设置了窗口标题和大小。
4. 设置文本框:创建了一个文本框用于显示信息,设置了背景颜色、前景色(文字颜色)和字体样式。
5. 开始监控和事件循环:调用update_smi()开始监控,并进入Tkinter的主事件循环,等待用户交互。
运行程序可以看到如下界面: