插件窝 干货文章 如何在Python终端下动态绘制显卡使用率和内存占用率折线图?

如何在Python终端下动态绘制显卡使用率和内存占用率折线图?

gpu 使用率 内存 显卡 893    来源:    2025-03-14

在Python终端下动态绘制显卡使用率和内存占用率的折线图,可以使用matplotlib库来实现。为了获取显卡的使用率和内存占用率,可以使用GPUtil库(适用于NVIDIA显卡)或psutil库(适用于CPU和内存)。以下是一个示例代码,展示如何动态绘制显卡使用率和内存占用率的折线图。

安装依赖库

首先,确保你已经安装了所需的库:

pip install matplotlib GPUtil psutil

示例代码

import time
import matplotlib.pyplot as plt
import GPUtil
import psutil

# 初始化数据存储
gpu_usage = []
gpu_memory = []
timestamps = []

# 设置绘图
plt.ion()  # 开启交互模式
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 8))

def update_plot():
    ax1.clear()
    ax2.clear()

    # 绘制GPU使用率
    ax1.plot(timestamps, gpu_usage, label='GPU Usage (%)', color='b')
    ax1.set_ylabel('GPU Usage (%)')
    ax1.set_title('GPU Usage Over Time')
    ax1.legend()

    # 绘制GPU内存占用率
    ax2.plot(timestamps, gpu_memory, label='GPU Memory Usage (MB)', color='r')
    ax2.set_xlabel('Time (s)')
    ax2.set_ylabel('GPU Memory Usage (MB)')
    ax2.set_title('GPU Memory Usage Over Time')
    ax2.legend()

    plt.tight_layout()
    plt.draw()
    plt.pause(0.01)

try:
    start_time = time.time()
    while True:
        # 获取GPU信息
        gpus = GPUtil.getGPUs()
        if gpus:
            gpu = gpus[0]  # 假设只有一个GPU
            gpu_usage.append(gpu.load * 100)  # GPU使用率(百分比)
            gpu_memory.append(gpu.memoryUsed)  # GPU内存使用量(MB)
        else:
            gpu_usage.append(0)
            gpu_memory.append(0)

        # 记录时间戳
        timestamps.append(time.time() - start_time)

        # 更新图表
        update_plot()

        # 等待1秒
        time.sleep(1)

except KeyboardInterrupt:
    print("Plotting stopped.")

代码说明

  1. GPUtil:用于获取NVIDIA显卡的使用率和内存占用率。
  2. psutil:用于获取系统内存和CPU的使用情况(虽然在这个例子中没有使用,但你可以扩展代码来监控这些指标)。
  3. matplotlib:用于绘制动态折线图。
  4. plt.ion():开启交互模式,允许动态更新图表。
  5. update_plot():每次调用时清除旧图表并绘制新的数据。

运行代码

运行代码后,你将看到一个动态更新的折线图,显示GPU的使用率和内存占用率随时间的变化。

注意事项

  • 如果你有多个GPU,可以通过修改gpus[0]来选择不同的GPU。
  • 如果你使用的是AMD显卡或其他非NVIDIA显卡,GPUtil可能无法正常工作。你可以使用其他工具或库来获取显卡信息。

通过这种方式,你可以在Python终端下动态监控并绘制显卡的使用率和内存占用率。