在Python终端下绘制实时的显卡利用率折线图,可以使用matplotlib
库进行绘图,并结合nvidia-smi
命令获取显卡的利用率信息。以下是一个简单的实现步骤:
首先,确保你已经安装了matplotlib
和numpy
库。如果没有安装,可以使用以下命令进行安装:
pip install matplotlib numpy
使用nvidia-smi
命令可以获取显卡的利用率信息。我们可以通过Python的subprocess
模块来调用这个命令并解析输出。
使用matplotlib
的动画功能来实时更新折线图。
import matplotlib.pyplot as plt
import numpy as np
import subprocess
import time
from matplotlib.animation import FuncAnimation
# 初始化数据
x_data = []
y_data = []
fig, ax = plt.subplots()
line, = ax.plot(x_data, y_data)
# 设置图表属性
ax.set_xlabel('Time (s)')
ax.set_ylabel('GPU Utilization (%)')
ax.set_title('Real-time GPU Utilization')
ax.set_ylim(0, 100) # GPU利用率范围是0-100%
def get_gpu_utilization():
# 使用nvidia-smi命令获取GPU利用率
result = subprocess.run(['nvidia-smi', '--query-gpu=utilization.gpu', '--format=csv,noheader,nounits'],
stdout=subprocess.PIPE)
utilization = int(result.stdout.decode('utf-8').strip())
return utilization
def update(frame):
# 获取当前时间戳
current_time = time.time()
# 获取GPU利用率
utilization = get_gpu_utilization()
# 添加数据点
x_data.append(current_time)
y_data.append(utilization)
# 只保留最近100个数据点
if len(x_data) > 100:
x_data.pop(0)
y_data.pop(0)
# 更新折线图
line.set_data(x_data, y_data)
ax.relim()
ax.autoscale_view()
return line,
# 创建动画
ani = FuncAnimation(fig, update, interval=1000) # 每1000ms更新一次
# 显示图表
plt.show()
get_gpu_utilization
函数通过调用nvidia-smi
命令获取当前GPU的利用率。update
函数负责更新图表数据,并重新绘制折线图。FuncAnimation
用于创建动画,每1000ms调用一次update
函数来更新图表。将上述代码保存为一个Python脚本(如gpu_utilization.py
),然后在终端中运行:
python gpu_utilization.py
nvidia-smi
命令可用。nvidia-smi
命令的参数来获取特定GPU的利用率。通过这种方式,你可以在Python终端下实时监控并绘制显卡利用率的折线图。