用py获取显卡的占用率

devtools/2024/9/24 0:56:52/

这是什么

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

注意

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

import subprocess
import serial
import timedef 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_usagedef 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 Noneif __name__ == "__main__":port = 'COM10'baudrate = 115200timeout = 1try:# 初始化串口连接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} 已关闭。")


http://www.ppmy.cn/devtools/98514.html

相关文章

达梦数据库表结构导出到 Excel 教程

在数据库开发和维护中,导出数据表结构是常见的需求之一,特别是在进行数据库文档化、系统迁移、版本控制等工作时。通过导出表结构到 Excel,我们可以方便地查看、分析和分享表结构信息。在本文中,我将结合达梦数据库的相关 SQL 查询…

boost::asio 库版本,C/C++代码编译兼容性

1、boost::asio::spawn 开启有栈(stackful)协同程序,版本改进及限制 > boost_1_80 版本应采用以下方式。 auto f [self, this](const boost::asio::yield_context& y) noexcept {bool success_ do_handshake(y);if (!success_) {clo…

pnpm install 后还是没有生成 pnpm-lock.yaml 文件

报错信息: ERR_PNPM_CONFIG_CONFLICT_LOCKFILE_ONLY_WITH_NO_LOCKFILE Cannot generate a pnpm-lock.yaml because lockfile is set to false 问题: 我删除了pnpm-lock.yaml文件,以便获得最新的依赖项 运行 pnpm i 命令,以便生…

Python中类的使用5

在Python中类的使用4-CSDN博客中提到,子类继承父类所有的属性和方法。对于子类来说,如果继承的方法不符合子类的要求,可以对其进行重写。相当于儿子从父亲那里继承了一件衣服,但是这个衣服的款式比较老旧,可以把这件衣…

二维中,若直线上两点q1和q2,输入一个点P1,求P1在直线上的垂点

一、计算过程 在二维空间中,若给定直线上两点Q1和Q2以及一个点P1,要求出点P1在直线上的垂点,可以通过以下步骤进行: ‌1、判断点P1是否在直线q1-q2上‌: 首先,需要判断点P1是否位于直线Q1-Q2上。这可以通过…

32 - I. 从上到下打印二叉树

comments: true difficulty: 中等 edit_url: https://github.com/doocs/leetcode/edit/main/lcof/%E9%9D%A2%E8%AF%95%E9%A2%9832%20-%20I.%20%E4%BB%8E%E4%B8%8A%E5%88%B0%E4%B8%8B%E6%89%93%E5%8D%B0%E4%BA%8C%E5%8F%89%E6%A0%91/README.md 面试题 32 - I. 从上到下打印二叉树…

前端(Vue)headerSearch(页面搜索)通用解决方案 及 原理

简介 击后弹出输入框输入框可以输入页面的索引,比如项目中包含了文章相关的点击后可以进入对应界面同时也支持英文索引 原理 headerSearch 是复杂后台系统中非常常见的一个功能,它可以:在指定搜索框中对当前应用中所有页面进行检索&#…

【大模型微调训练与实操】微调 Llama 3 并在本地使用

目标:根据医患对话数据集对 Llama 3 进行微调,创建一个专门针对医疗对话的模型。在合并、转换和量化模型后,它将可以通过 Jan 应用程序供本地私人使用。 在本教程中,我们将学习如何在医学数据集上微调 Llama 3。我们还将通过 Ja…