python

超轻量级php框架startmvc

Python获取CPU、内存使用率以及网络使用状态代码

更新时间:2020-05-21 18:54:01 作者:startmvc
由于psutil已更新到3.0.1版本,最新的代码如下:#!/usr/bin/envpythonimportosimporttimeimportsysimportatexi

由于psutil已更新到3.0.1版本,最新的代码如下:


#!/usr/bin/env python

import os
import time
import sys
import atexit
import psutil

#print "Welcome,current system is",os.name," 3 seconds late start to get data"
time.sleep(3)

line_num = 1

#function of Get cpu state
def getCPUstate(interval=1):
 return (" CPU:"+str(psutil.cpu_percent(interval))+"%")

def getMemorystate():
 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"
 )
 return line
def bytes2human(n):
 """
 >>>bytes2human(10000)
 '9.8k'
 >>>bytes2human(100001221)
 '95.4M'
 """
 symbols = ('K','M','G','T','P','E','Z','Y')
 prefix = {}
 for i ,s in enumerate(symbols):
 prefix[s] = 1 << (i+1)*10
 for s in reversed(symbols):
 if n >=prefix[s]:
 value = float(n) / prefix[s]
 return '%.2f %s'%(value,s)
 return '%.2fB'%(n)
def poll(interval):
 """Retrieve raw stats within an interval window."""
 tot_before = psutil.net_io_counters()
 pnic_before = psutil.net_io_counters(pernic=True)
 #sleep some time
 time.sleep(interval)
 tot_after = psutil.net_io_counters()
 pnic_after = psutil.net_io_counters(pernic=True)
 #get cpu stats
 cpu_state = getCPUstate(interval)
 #get memory
 memory_state = getMemorystate()
 return (tot_before,tot_after,pnic_before,pnic_after,cpu_state,memory_state)
def refresh_window(tot_before,tot_after,pnic_before,pnic_after,cpu_state,memory_state):
 """print stats on screen"""
 #print current time,cpu state,memory
 print (time.asctime() +" | "+cpu_state+" | "+
 memory_state)
 #total
 print(" NetStates:")
 print(" total bytes: sent: %-10s received: %s"%(\
 bytes2human(tot_after.bytes_sent), \
 bytes2human(tot_after.bytes_recv)))
 print( " total packets: sent: %-10s received: %s"%(\
 tot_after.packets_sent,\
 tot_after.packets_recv))
 # per-network interface details: let's sort network interfaces so 
 # that the ones which generated more traffic are shown first
 print( " ")
 nic_names = pnic_after.keys()
 #nic_names.sort(key=lambda x: sum(pnic_after[x]), reverse=True)
 for name in nic_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
 while 1:
 args = poll(interval)
 refresh_window(*args)
 interval = 1
except (KeyboardInterrupt,SystemExit):
 pass

以上就是本次更新后的实例代码,大家可以一起测试下,如果有其他问题可以在下方的留言区讨论,感谢你对脚本之家的支持。

Python CPU使用率 内存使用率 网络状态