本文目录导读:

是的,脚本完全可以监控GPU温度,这主要取决于你的操作系统和使用的脚本语言。
以下是几种常见的方法:
使用命令行工具(最常用、最直接)
几乎所有的GPU监控工具都提供命令行接口,非常适合在脚本中调用。
Windows (使用 nvidia-smi)
NVIDIA显卡必备工具,通常随驱动安装。
:: 查看所有GPU的温度(只提取温度值) nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader :: 查看更详细的信息 nvidia-smi --query-gpu=index,name,temperature.gpu,utilization.gpu,memory.used --format=csv
脚本示例 (PowerShell/Batch):
$temp = nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader Write-Host "当前GPU温度: $temp °C"
Linux (使用 nvidia-smi 或 sensors)
- NVIDIA显卡:
nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader
- AMD显卡:
# 使用amdgpu驱动 cat /sys/class/drm/card0/device/hwmon/hwmon*/temp1_input # 或使用rocm-smi rocm-smi --showtemp
- 通用工具 (sensors):
sensors | grep -i "gpu\|amdgpu\|nvme"
macOS (使用 istats 或 powermetrics)
# 如果安装了istats (需要先安装: brew install istats) istats cpu temp --value-only # 使用 powermetrics (需要root权限) sudo powermetrics --samplers smc -n 1 -i 1000 | grep -i "GPU die temperature"
使用编程语言库
这种方式更灵活,可以直接在脚本中处理数据。
Python (推荐)
Python有多个库可以直接读取GPU信息。
安装依赖:
pip install pynvml # 针对NVIDIA pip install pyamdgpuinfo # 针对AMD (Linux)
脚本示例 (Python):
import pynvml
# 初始化
pynvml.nvmlInit()
handle = pynvml.nvmlDeviceGetHandleByIndex(0) # 第一个GPU
# 获取温度
temp = pynvml.nvmlDeviceGetTemperature(handle, pynvml.NVML_TEMPERATURE_GPU)
print(f"GPU温度: {temp}°C")
# 获取更多信息
name = pynvml.nvmlDeviceGetName(handle).decode('utf-8')
util = pynvml.nvmlDeviceGetUtilizationRates(handle)
print(f"GPU: {name}, 利用率: {util.gpu}%, 显存: {util.memory}%")
pynvml.nvmlShutdown()
Node.js
npm install systeminformation
脚本示例 (Node.js):
const si = require('systeminformation');
si.graphics().then(data => {
data.controllers.forEach(gpu => {
console.log(`GPU: ${gpu.model}, 温度: ${gpu.temperatureGpu}°C`);
});
});
监控脚本示例(带报警功能)
Python 脚本 - 持续监控并在温度过高时报警:
#!/usr/bin/env python3
import pynvml
import time
import os
import sys
# 配置
THRESHOLD = 80 # 报警阈值 (°C)
CHECK_INTERVAL = 5 # 检查间隔(秒)
ALERT_COMMAND = "os.system('say 温度过高')" # macOS语音提醒,其他系统可替换
def get_gpu_temp():
pynvml.nvmlInit()
handle = pynvml.nvmlDeviceGetHandleByIndex(0)
temp = pynvml.nvmlDeviceGetTemperature(handle, pynvml.NVML_TEMPERATURE_GPU)
pynvml.nvmlShutdown()
return temp
def log_temp(temp):
timestamp = time.strftime("%Y-%m-%d %H:%M:%S")
print(f"[{timestamp}] GPU温度: {temp}°C")
with open("gpu_temp.log", "a") as f:
f.write(f"[{timestamp}] {temp}°C\n")
# 主循环
try:
while True:
temp = get_gpu_temp()
log_temp(temp)
if temp > THRESHOLD:
print(f"⚠️ 警告: GPU温度 {temp}°C 超过阈值 {THRESHOLD}°C!")
# 执行报警动作(如发送邮件、触发蜂鸣器等)
# os.system(ALERT_COMMAND)
time.sleep(CHECK_INTERVAL)
except KeyboardInterrupt:
print("\n监控已停止")
sys.exit(0)
跨平台方案
如果需要在多处运行,可以考虑:
- Python +
psutil+GPUtil:import GPUtil gpus = GPUtil.getGPUs() for gpu in gpus: print(f"{gpu.name}: {gpu.temperature}°C")安装:
pip install gputil
注意事项
- 权限问题: 某些系统或命令(如macOS的
powermetrics)需要root权限。 - 驱动要求: NVIDIA需要安装官方驱动;AMD在Linux上可能需要
amdgpu驱动。 - 多GPU: 如果有多个GPU,需要遍历索引(0,1,2...)或通过UUID区分。
- 集成显卡: 集成在CPU中的显卡通常没有独立的温度传感器,可能需要通过CPU温度间接监控。
脚本监控GPU温度非常可行且简单,最推荐的方法是Python + pynvml(或GPUtil),或者直接在bash中调用nvidia-smi,你可以将监控脚本集成到自动化任务、报警系统或性能调优工具中。