pwd069报警是什么原因pwd069报警是什么原因

关注健康
关注真实体验

pwd069报警是什么原因

pwd069报警是什么原因()

背景介绍

实验室有多个大佬同时共用一台服务器,每个服务器上有若干块GPU显卡,经常在一台服务器上搭好环境,调好代码,准备跑程序,发现GPU卡已经全被被占了。

功能:定时查询服务器显卡,若有空卡,则邮件通知。可以设置通知的时间范围(工作时间8-24时)可以设置时间间隔安装:需要安装 python 环境(python3.6),建议使用anaconda。pip install nvidia-ml-py python工具pynvml来实现显卡信息的读取与管理pip install schedule 可以用一个很方便且轻量的第三方库:schedule利用python工具pynvml来实现显卡信息的读取与管理

#可以根据python版本制定2/3# python2pip install nvidia-ml-py2# python3pip install nvidia-ml-py3

https://blog.csdn.net/u014636245/article/details/83932090

使用

安装完后,直接运行该程序 python filename.py

提醒:可以使用同一个QQ邮箱进行收发

#coding=utf-8from email.mime.text import MIMETextfrom email.header import Headerfrom smtplib import SMTP_SSLfrom pynvml import *import scheduleimport timeimport datetimedef mail_fun(): #qq邮箱smtp服务器 host_server = 'smtp.qq.com' #sender_qq为发件人的qq号码 sender_qq = '25****75@qq.com' #pwd为qq邮箱的授权码 pwd = ' xh**********bdc' ## xh**********bdc #发件人的邮箱 sender_qq_mail = '25****75@qq.com' #收件人邮箱 receiver = '41****75@qq.com' #邮件的正文内容 mail_content = 'fwq 有卡' #邮件标题 mail_title = 'fwq的邮件' #ssl登录 smtp = SMTP_SSL(host_server) #set_debuglevel()是用来调试的。参数值为1表示开启调试模式,参数值为0关闭调试模式 smtp.set_debuglevel(1) smtp.ehlo(host_server) smtp.login(sender_qq, pwd) msg = MIMEText(mail_content, "plain", 'utf-8') msg["Subject"] = Header(mail_title, 'utf-8') msg["From"] = sender_qq_mail msg["To"] = receiver smtp.sendmail(sender_qq_mail, receiver, msg.as_string()) smtp.quit()def check_nvi(): nvmlInit() #初始化 #查看设备 deviceCount = nvmlDeviceGetCount() print(datetime.datetime.now()) for i in range(deviceCount): handle = nvmlDeviceGetHandleByIndex(i) # print("GPU", i, ":", nvmlDeviceGetName(handle)) # 查看当前显卡 剩余显存大小pip free_info = nvmlDeviceGetMemoryInfo(handle).free / 1024 / 1024 print("GPU", i, ":", str(free_info)+"M") # 剩余显存 大于9000 邮件通知 if free_info >= 9000: # 判断当前时间是否是在 工作时间(工作时间才通知 8-24) # 当前时间(第几个小时) curr_hour = time.localtime( time.time() ).tm_hour if curr_hour >= 8 and curr_hour <=24: mail_fun() break #最后要关闭管理工具 nvmlShutdown()def job(): check_nvi()# 定时任务schedule.every(30).minutes.do(job) # 每30分钟执行一次# schedule.every(30).seconds.do(job) # 每10秒执行一次if __name__ == "__main__": # mail_fun() # check_nvi() while True: schedule.run_pending() # 运行所有可运行的任务 time.sleep(1)


参考:https://www.yuque.com/docs/share/d28fc430-e5bf-461b-9181-069d3bacf78d?#

未经允许不得转载: 九月健康网» pwd069报警是什么原因
分享到: 更多 ( 0)

相关推荐