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