首页 > 编程 > Python > 正文

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

2020-01-04 15:54:45
字体:
来源:转载
供稿:网友

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

#!/usr/bin/env pythonimport osimport timeimport sysimport atexitimport 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 statedef 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 linedef 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 = 1except (KeyboardInterrupt,SystemExit):  pass

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


注:相关教程知识阅读请移步到python教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表