方法一:
1 import time 导入time模块 2 import psutil 导入psutil模块 3 def func(): 4 while True: -------》持续监控得while循环 5 mem = psutil.virtual_memory() ----》监控物理内存 6 disk = psutil.disk_usage(r'c:') ----》监控硬盘 7 cpu = psutil.cpu_percent(1) -----》cpu使用率监控 8 if cpu > 10: 9 print('你的cpu顶不住了,已经使用了%s'%cpu) 使用占位符 10 11 else: 12 print('你的cpu情况还行噢,已经使用了%s'%cpu) 13 if mem[2] > 70: 14 print('你的物理内存顶不住了,占用率为%s'%mem[2]) 15 else: 17 print('你的内存情况还行噢,占用率为%s'%mem[2]) 18 if disk[3] > 70: 20 print('你的C盘里放了多少资源啊,使用率高达%s'%disk[3]) 21 else: 23 print('C盘里东西不多,占用了%s'%disk[3]) 24 time.sleep(3) ----》睡三秒
方法二:(传参,只举例cpu使用率监控)
1 import time 2 import psutil 3 def func(cpu): ----》上题也可以使用传参来操作 4 while True: 5 if cpu > 14: 6 print('你的cpu顶不住了,已经使用了%s'%cpu) 7 else: 9 print('你的cpu情况还行噢,已经使用了%s'%cpu) 10 time.sleep(3) 11 func(cpu=psutil.cpu_percent(1)) -----》以key,value的形式调用一个值传给形参然后再到函数体中,这里的值为cpu *
完善版本
1 #连接邮箱服务器 2 import yagmail #请先下载yagmail包,再导入 3 import psutil #导入psutil模块 4 def mail(subject,contents): ---》形参为邮件的标题和内容 5 yag = yagmail.SMTP(user='z1065132644@163.com', password='yn369369', host='smtp.163.com') passwd为授权的密码不是登陆密码 6 #发送邮件 7 yag.send(to='z1065132644@163.com',subject=subject, contents=contents) ————》定义变量subject和contents 8 #断开连接 9 yag.close() 10 11 # import psutil 12 def cpu_info(): ----》函数名尽可能切合内容 13 cpu = psutil.cpu_percent(1) 14 return cpu ----》返回cpu,可以被调用,此return的结果就是调用的结果 15 res=cpu_info() ----》给调用结果赋值。可以省略,下同 16 17 def mem_info(): 18 mem = psutil.virtual_memory() ---》通过ps模块输出内存情况 19 info1={'mem_total':mem[0],'mem_free':mem[1],'mem_percent':mem[2],'mem_used':mem[3]} --》将内存情况放入一个字典,方便调用 20 return info1 21 res2=mem_info() 22 23 def disk_info(): 24 disk = psutil.disk_usage(r'c:') ---》(r'c:')为查看盘的固定写法 25 info2 = {'total': disk[0], 'used': disk[1], 'free': disk[2], 'percent': disk[3]} ---》同样写入一个字典 26 return info2 27 res3=disk_info() 28 29 def main(): ----->定义一个主函数 30 m_cpu = res 31 m_mem = res2 32 m_disk = res3 --->将各个分函数的调用结果当作函数体输入 33 msg=''' ---》赋值msg整个的监控情况,cpu,内存和磁盘使用等 34 cpu使用率%s 35 内存总量%sM ---》使用占位符,单位,注意%%为一个百分比的固定写法 36 内存剩余%sM 37 内存使用率%s 38 内存使用量%sM 39 磁盘总量%sGB 40 磁盘使用量%sGB 41 磁盘剩余量%sGB 42 磁盘使用率%s%% 43 ''' ---》 换行用 44 %(m_cpu,int(m_mem.get('mem_total')/1024/1024),int(m_mem['mem_free']/1024/1024),m_mem['mem_percent'],
int(m_mem['mem_used']/1024/1024),int(m_disk['total']/1024/1024/1024),int(m_disk['used']/1024/1024/1024),
int(m_disk['free']/1024/1024/1024),m_disk['percent']) --》int()取整数 46 print(msg) ---》输出整个情况 47 if m_cpu >50: ---》设置报警值,下同 48 mail('cpu报警',msg) ---》给分函数mail的形参传参 49 else: 50 print('cpu正常') 51 if m_mem['mem_percent'] > 50: 52 print('悠着点,内存占用过半了') 53 else: 54 print('relax') 55 if m_disk['percent'] > 50: 56 print('悠着点,磁盘快炸了') 57 else: 58 print('放轻松,没事哦') 59 60 if __name__=='__main__': --》主函数调用固定格式 61 main()