Python获取CPU、内存使用率以及网络使用状态代码
由于psutil已更新到3.0.1版本,最新的代码如下:
#!/usr/bin/envpython importos importtime importsys importatexit importpsutil #print"Welcome,currentsystemis",os.name,"3secondslatestarttogetdata" time.sleep(3) line_num=1 #functionofGetcpustate defgetCPUstate(interval=1): return("CPU:"+str(psutil.cpu_percent(interval))+"%") defgetMemorystate(): phymem=psutil.virtual_memory() line="Memory:%5s%%%6s/%s"%( phymem.percent, str(int(phymem.used/1024/1024))+"M", str(int(phymem.total/1024/1024))+"M" ) returnline defbytes2human(n): """ >>>bytes2human(10000) '9.8k' >>>bytes2human(100001221) '95.4M' """ symbols=('K','M','G','T','P','E','Z','Y') prefix={} fori,sinenumerate(symbols): prefix[s]=1<<(i+1)*10 forsinreversed(symbols): ifn>=prefix[s]: value=float(n)/prefix[s] return'%.2f%s'%(value,s) return'%.2fB'%(n) defpoll(interval): """Retrieverawstatswithinanintervalwindow.""" tot_before=psutil.net_io_counters() pnic_before=psutil.net_io_counters(pernic=True) #sleepsometime time.sleep(interval) tot_after=psutil.net_io_counters() pnic_after=psutil.net_io_counters(pernic=True) #getcpustats cpu_state=getCPUstate(interval) #getmemory memory_state=getMemorystate() return(tot_before,tot_after,pnic_before,pnic_after,cpu_state,memory_state) defrefresh_window(tot_before,tot_after,pnic_before,pnic_after,cpu_state,memory_state): """printstatsonscreen""" #printcurrenttime,cpustate,memory print(time.asctime()+"|"+cpu_state+"|"+ memory_state) #total print("NetStates:") print("totalbytes:sent:%-10sreceived:%s"%(\ bytes2human(tot_after.bytes_sent),\ bytes2human(tot_after.bytes_recv))) print("totalpackets:sent:%-10sreceived:%s"%(\ tot_after.packets_sent,\ tot_after.packets_recv)) #per-networkinterfacedetails:let'ssortnetworkinterfacesso #thattheoneswhichgeneratedmoretrafficareshownfirst print("") nic_names=pnic_after.keys() #nic_names.sort(key=lambdax:sum(pnic_after[x]),reverse=True) fornameinnic_names: stats_before=pnic_before[name] stats_after=pnic_after[name] templ="%-15s%15s%15s" print(templ%(name,"TOTAL","PER-SEC")) print(templ%( "bytes-sent", bytes2human(stats_after.bytes_sent), bytes2human(stats_after.bytes_sent-stats_before.bytes_sent)+ '/s', )) print(templ%( "bytes-recv", bytes2human(stats_after.bytes_recv), bytes2human(stats_after.bytes_recv-stats_before.bytes_recv) +'/s', )) print(templ%( "pkts-sent", stats_after.packets_sent, stats_after.packets_sent-stats_before.packets_sent, )) print((templ%( "pkts-recv", stats_after.packets_recv, stats_after.packets_recv-stats_before.packets_recv, ))) print("") try: interval=0 while1: args=poll(interval) refresh_window(*args) interval=1 except(KeyboardInterrupt,SystemExit): pass
以上就是本次更新后的实例代码,大家可以一起测试下,如果有其他问题可以在下方的留言区讨论,感谢你对毛票票的支持。