插件窝 干货文章 Python终端下如何绘制实时显卡利用率折线图?

Python终端下如何绘制实时显卡利用率折线图?

利用率 Utilization 线图 获取 135    来源:    2025-03-13

在Python终端下绘制实时的显卡利用率折线图,可以使用matplotlib库进行绘图,并结合nvidia-smi命令获取显卡的利用率信息。以下是一个简单的实现步骤:

1. 安装必要的库

首先,确保你已经安装了matplotlibnumpy库。如果没有安装,可以使用以下命令进行安装:

pip install matplotlib numpy

2. 获取显卡利用率

使用nvidia-smi命令可以获取显卡的利用率信息。我们可以通过Python的subprocess模块来调用这个命令并解析输出。

3. 实时绘制折线图

使用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()

代码说明

  1. 获取GPU利用率get_gpu_utilization函数通过调用nvidia-smi命令获取当前GPU的利用率。
  2. 更新图表update函数负责更新图表数据,并重新绘制折线图。
  3. 动画FuncAnimation用于创建动画,每1000ms调用一次update函数来更新图表。

运行代码

将上述代码保存为一个Python脚本(如gpu_utilization.py),然后在终端中运行:

python gpu_utilization.py

注意事项

  • 确保你的系统上安装了NVIDIA驱动,并且nvidia-smi命令可用。
  • 如果你有多个GPU,可能需要调整nvidia-smi命令的参数来获取特定GPU的利用率。

通过这种方式,你可以在Python终端下实时监控并绘制显卡利用率的折线图。