当前位置: 首页 > news >正文

用py获取显卡的占用率

这是什么

这是一个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} 已关闭。")

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【解压即玩】PC电脑版【漫威蜘蛛侠2】豪华中文版+通关存档+画质超棒,神作
  • MySQL——单表查询(二)按条件查询(11)OR 和 AND 关键字一起使用的情况
  • Springcloud从零开始--Eureka(一)
  • 九、 系统安全(考点篇)试题
  • 无人机飞手培训:考证、组装、维修技术详解
  • 深信服技术服务工程师面试全过程分享
  • 为什么Qt源码中要用d_ptr和q_ptr
  • 力扣223题详解:矩形面积的多种解法与模拟面试
  • 两个dp题
  • MyBatis 源码解读:专栏导读与学习路线
  • python模块 - os系统交互模块
  • 订单到期关闭如何实现?
  • 中移动集团SRE人员能力提升培训圆满结课
  • 数学建模算法总结
  • 约瑟夫环问题【算法 06】
  • 分享的文章《人生如棋》
  • Java 多线程编程之:notify 和 wait 用法
  • Javascripit类型转换比较那点事儿,双等号(==)
  • javascript 哈希表
  • JavaWeb(学习笔记二)
  • Java教程_软件开发基础
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Meteor的表单提交:Form
  • Netty源码解析1-Buffer
  • SpiderData 2019年2月23日 DApp数据排行榜
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • web标准化(下)
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • ------- 计算机网络基础
  • 技术:超级实用的电脑小技巧
  • 那些被忽略的 JavaScript 数组方法细节
  • 前端工程化(Gulp、Webpack)-webpack
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 优秀架构师必须掌握的架构思维
  • 云大使推广中的常见热门问题
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • scrapy中间件源码分析及常用中间件大全
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • (MATLAB)第五章-矩阵运算
  • (二)Linux——Linux常用指令
  • (附源码)php投票系统 毕业设计 121500
  • (十)Flink Table API 和 SQL 基本概念
  • (状压dp)uva 10817 Headmaster's Headache
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • ******之网络***——物理***
  • *Django中的Ajax 纯js的书写样式1
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .net 发送邮件
  • @AliasFor 使用
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • [AIGC] MySQL存储引擎详解
  • [AutoSar]BSW_OS 01 priority ceiling protocol(PCP)
  • [BT]BUUCTF刷题第9天(3.27)
  • [BUG]vscode插件live server无法自动打开浏览器