python监控显卡显存

文章目录

    • 内存监控
    • 进程监控
        • 获取进程pid
        • 管理进程pid的死活

内存监控

在工作组中,经常会遇到多人争抢显卡的情况,僧多肉少,所以可以做个监控显卡的头部程序,然后再调取主程序训练模型。
我们借用pynvml,没有安装的,可以使用下面命令直接安装:

pip install pynvml

下面使用pynvml可以查看显卡总共多少显存,剩余多少显存,以及已用多少显存。

import pynvmlpynvml.nvmlInit()
handle = pynvml.nvmlDeviceGetHandleByIndex(0) # 这里的0表示第一张显卡
meminfo = pynvml.nvmlDeviceGetMemoryInfo(handle)
print(meminfo.total/1024/1024/1024) # 输出第一张显卡的显存
print(meminfo.free/1024/1024/1024) # 输出第一张显卡的可用显存
print(meminfo.used/1024/1024/1024) # 输出第一张显卡的已用显存

我们如果想对显卡进行监控,可以使用下面的命令:

import pynvml# 定义一个读取gpu显卡的函数,gpu为第几张显卡,free表示需要多少剩余显存
def test_gpu(gpu, free):pynvml.nvmlInit()handle = pynvml.nvmlDeviceGetHandleByIndex(gpu)meminfo = pynvml.nvmlDeviceGetMemoryInfo(handle)return meminfo.free/1024/1024/1024 < free

然后用while循环对显卡进行监控:

while test_gpu(1, 40):print("GPU memory < %dGB, wait 1 minut"%40)time.sleep(60)

当显卡的剩余显存大于40GB的时候,才可以执行下面的程序,否则将等待1分钟(可以根据自己情况设置)。
如果想要执行python程序文件,可以使用os库运行:

import os
os.system('python run.py')

进程监控

获取进程pid

既然要进程监控,就需要获得当前显卡上运行程序的进程pid,一张显卡上的进程个数可能是0,也可能是1,还有可能是N。没人用卡进程就是0,一个人用时1(tensorflow一般会将显存占完,不让其它新用户使用,pytorch则不是,用多少,占用多少),多人在用显卡则有N个进程。

import pynvmlpynvml.nvmlInit()
handle = pynvml.nvmlDeviceGetHandleByIndex(0) # 这里的0表示第一张显卡
gpu_ps = pynvml.nvmlDeviceGetComputeRunningProcesses(handle) # 获取该显卡上运行的程序,他是一个list# 输出该显卡一共多少进程
print(len(gpu_ps))
# 输出第一个进程的pid
print(gpu_ps[0].pid)
# 将所有进程的pid
for gpu_p in gpu_ps:print(gpu_p.pid)
管理进程pid的死活

杀死进程可以借助psutil,当然,需要保证的时该pid是你自己的进程,不然无法管理。

import os, psutilos.system("kill gpu_ps[0].pid")
print(psutil.pid_exists(gpu_ps[0].pid)) # 还在活着,输出True,死掉了输出False

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/186847.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Redis】Redis高级特性和应用(慢查询、Pipeline、事务、Lua)

目录 Redis的慢查询 慢查询配置 慢查询操作命令 慢查询建议 Pipeline 事务 Redis的事务原理 Redis的watch命令 Pipeline和事务的区别 Lua Lua入门 安装Lua Lua基本语法 注释 标示符 关键词 全局变量 Lua中的数据类型 Lua 中的函数 Lua 变量 Lua中的控制语句…

Unity DOTS《群体战斗弹幕游戏》核心技术分析之3D角色动画

最近DOTS发布了正式的版本, 我们来分享现在流行基于群体战斗的弹幕类游戏&#xff0c;实现的核心原理。今天给大家介绍大规模战斗群体3D角色的动画如何来实现。 DOTS 对角色动画支持的局限性 截止到Unity DOTS发布的版本1.0.16,目前还是无法很好的支持3D角色动画。在DOTS 的b…

蓝桥杯-02-蓝桥杯C/C++组考点与14届真题

文章目录 蓝桥杯C/C组考点与14届真题参考资源C/C组考点1. 组别2. 竞赛赛程3. 竞赛形式4. 参赛选手机器环境5. 试题形式5.1. 结果填空题5.2. 编程大题 6. 试题考查范围7. 答案提交8. 评分9. 样题样题 1&#xff1a;矩形切割&#xff08;结果填空题&#xff09;样题 2&#xff1a…

群晖NAS配置之搭建WordPress个人博客站点

群晖NAS配置之搭建WordPress个人博客站点 之前写了一些ngrok和frp给群晖nas做内网穿透&#xff0c;今天分享一下在群晖nas下安装wordpress的教程。 WordPress是一个开源的内容管理系统&#xff08;CMS&#xff09;&#xff0c;最初是用来搭建博客的&#xff0c;但后来发展成为…

中职组网络安全-linux渗透测试-Server2203(环境+解析)

任务环境说明&#xff1a; 服务器场景&#xff1a;Server2203&#xff08;关闭链接&#xff09; 用户名&#xff1a;hacker 密码&#xff1a;123456 1.使用渗透机对服务器信息收集&#xff0c;并将服务器中SSH服务端口号作为flag提交&#xff1b; FLAG:2232 2. 使用渗透机对…

单链表相关经典算法OJ题:移除链表元素

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 题目&#xff1a;移除链表元素 解法一&#xff1a; 解法一的代码实现&#xff1a; 解法二&#xff1a; 解法二代码的实现&#xff1a; 总结 前言 世上有两种耀眼的…

改进LiteOS中物理内存分配算法(详细实验步骤+相关源码解读)

一、实验要求 优化TLSF算法&#xff0c;将Best-fit策略优化为Good-fit策略&#xff0c;进一步降低时间复杂度至O(1)。 优化思路&#xff1a; 1.初始化时预先为每个索引中的内存块挂上若干空闲块&#xff0c;在实际分配时避免分割&#xff08;split&#xff09;操作&#xff…

JAVA实战演练之自动驾驶系统

一基本概念&#xff1a; 1. 传感器数据处理&#xff1a; 自动驾驶汽车需要收集大量的数据&#xff0c;包括来自雷达、激光雷达(LiDAR)、摄像头等传感器的数据。这些数据需要通过JAVA程序进行处理和解析&#xff0c;以便汽车能够理解其周围环境。 2. 控制算法&#xff1a; JAVA可…

TA-Lib学习研究笔记(三)——Volatility Indicator

TA-Lib学习研究笔记&#xff08;三&#xff09;——Volatility Indicator 波动率指标函数组 Volatility Indicators: [‘ATR’, ‘NATR’, ‘TRANGE’] 1.ATR Average True Range 函数名&#xff1a;ATR 名称&#xff1a;真实波动幅度均值 简介&#xff1a;真实波动幅度均值…

力扣labuladong——一刷day61

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣865. 具有所有最深节点的最小子树二、力扣1123. 最深叶节点的最近公共祖先三、力扣1026. 节点与其祖先之间的最大差值四、力扣1120. 子树的最大平均值 …

SQL行转列,将json数组拆分成多行,一行变多行例子,(LATERAL VIEW explode)

需求背景 有一张工程师能力表&#xff0c;如&#xff1a; 张三 擅长java、c、c、c#、js 李四 擅长java、go 王五 擅长css、f# 陈六 擅长as、c、java 。。。 需要统计擅长各种语言的工程师的数量&#xff0c;如&#xff1a; java 3 c 2 go 1 代码示例 使用LATERAL VIEW expl…

自建CA并生成自签名SSL证书

文章目录 前言一键生成自签名证书命令脚本执行结果 分步来看看自建证书的过程自建CA根证书生成CA私钥生成CA自签名证书 自签名SSL证书生成服务器私钥和证书申请文件CRS使用CA根证书签名SSL证书 最终的文件列表相关名词SSL/TLS协议证书颁发机构&#xff08;CA&#xff09;数字证…

MacOS 14 系统 XCode15、 Flutter 开发 IOS

Flutter 系列文章目录 MacOS14 Sonoma 安装 Flutter 开发环境 MacOS 系统 Flutter开发Android 环境配置MacOS 系统 Flutter开发IOS 环境配置​​​​​​​ 前言 前面我们已经在MacOS14 M3芯片上安装好 Flutter环境&#xff0c;包括开发工具 VsCode 、Android Stuiod,那么fl…

vue3 子父组件、组件传值、

目录 父组件给子组件传值 子组件给父组件传值 页面index.vue 子组件footer.vue 父组件给子组件传值 index.vue页面 <div class"box"><!-- 页面使用组件的地方--><!-- parentData 子组件通过 parentData 接收test 要传给子组件的数据--><…

Flutter自定义TextInputFormatter实现金额输入框

一、金额输入框智能输入数字、小数点且只能有俩位小数&#xff0c;比如&#xff1a; 0.01、0.1、100 二、这里可以通过继承已有的FilteringTextInputFormatter来实现会更方便些&#xff0c;首先要设置的就是只允许输入数字、小数点 class AmountTextFieldFormatter extends Fil…

CCF CSP认证 历年题目自练Day50

题目 试题编号&#xff1a; 201809-3 试题名称&#xff1a; 元素选择器 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 256.0MB 问题描述&#xff1a; 题目分析&#xff08;个人理解&#xff09; 还是先理解题意&#xff0c;关于html的部分&#xff0c;可以按照样例画出…

【数据分析 | Numpy】Numpy模块系列指南(一),从设计架构说起

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

【redis缓存设计】

文章目录 缓存设计缓存穿透 缓存雪崩 缓存设计 缓存穿透 缓存穿透是指查询一个根本不存在的数据&#xff0c; 缓存层和存储层都不会命中&#xff0c; 通常出于容错的考虑&#xff0c; 如果从存储 层查不到数据则不写入缓存层。 缓存穿透将导致不存在的数据每次请求都要到存储…

动态规划--整数拆分

题目描述 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: n 10 输出: 36 解释…

第十八章,Swing窗体

概述 String包的层次结构和继承关系如下 常用的Swing组件如下表 Swing常用窗体 JFrame 窗体 JFrame 类的常用构造方法包括以下两种形式&#xff1a; public JFrame&#xff08;&#xff09;&#xff1a;创建一个初始不可见、没有标题的窗体。 public JFrame(String title)&a…