方法一:
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()