用py获取显卡的占用率

这是什么

这是一个py 编写的程序,功能上面是用于获取 NVIDIA 显卡的占用率,并通过串口将其发送出去。同时,程序也会读取串口接收到的数据并显示在终端上,这样方便调试。

注意

因为我用的是N卡所以这个程序限制N卡使用,然后你如果要测试需要把 port 变量设置为正确的串口名称,波特率也要配合一下

import subprocess
import serial
import time

def get_gpu_usage():
    # 运行 `nvidia-smi` 并获取输出
    result = subprocess.run(['nvidia-smi', '--query-gpu=utilization.gpu', '--format=csv,noheader,nounits'], 
                            stdout=subprocess.PIPE, 
                            text=True)
    
    # 解析输出
    gpu_usage = int(result.stdout.strip())
    return gpu_usage

def send_usage_via_serial(ser, usage):
    # 创建要发送的字符串
    usage_str = f"GPU Usage: {usage}%\n"  # 创建以 "GPU Usage: xx%" 格式的字符串
    print(f"Sending: {usage_str.strip()}")  # 调试输出,去掉末尾的换行符
    ser.write(usage_str.encode())  # 编码为字节流发送

def read_from_serial(ser):
    if ser.in_waiting > 0:
        return ser.read(ser.in_waiting).decode('utf-8').strip()
    return None

if __name__ == "__main__":
    port = 'COM10'
    baudrate = 115200
    timeout = 1

    try:
        # 初始化串口连接
        ser = serial.Serial(port, baudrate=baudrate, timeout=timeout)
        print(f"串口 {port} 已连接。")

        while True:
            try:
                # 获取 GPU 占用百分比
                gpu_usage = get_gpu_usage()
                
                # 显示在终端
                print(f"GPU Usage: {gpu_usage}%")
                
                # 通过串口发送 GPU 占用百分比
                send_usage_via_serial(ser, gpu_usage)
                
                # 读取并显示串口收到的信息
                received_data = read_from_serial(ser)
                if received_data:
                    print(f"Received from serial: {received_data}")
                
                # 等待 0.9 秒
                time.sleep(0.2)
            except Exception as e:
                print(f"发生错误: {e}")
    except KeyboardInterrupt:
        print("程序已终止。")
    except Exception as e:
        print(f"初始化串口时发生错误: {e}")
    finally:
        if ser.is_open:
            ser.close()  # 确保在程序结束时关闭串口连接
            print(f"串口 {port} 已关闭。")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值