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


Posted in Python onFebruary 08, 2018

由于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 相关文章推荐
Mac下Supervisor进程监控管理工具的安装与配置
Dec 16 Python
在Python中操作字典之clear()方法的使用
May 21 Python
python 多线程实现检测服务器在线情况
Nov 25 Python
玩转python爬虫之URLError异常处理
Feb 17 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
Apr 28 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
Jan 24 Python
python中kmeans聚类实现代码
Feb 23 Python
Python对List中的元素排序的方法
Apr 01 Python
python版大富翁源代码分享
Nov 19 Python
pandas取出重复数据的方法
Jul 04 Python
python tkinter canvas使用实例
Nov 04 Python
浅析python 通⽤爬⾍和聚焦爬⾍
Sep 28 Python
python实现二叉查找树实例代码
Feb 08 #Python
单链表反转python实现代码示例
Feb 08 #Python
Python测试人员需要掌握的知识
Feb 08 #Python
python实现单向链表详解
Feb 08 #Python
Python生成器以及应用实例解析
Feb 08 #Python
代码分析Python地图坐标转换
Feb 08 #Python
python爬虫中get和post方法介绍以及cookie作用
Feb 08 #Python
You might like
Laravel 5.5 异常处理 &amp; 错误日志的解决
2019/10/17 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
document.all与WEB标准
2020/05/13 Javascript
执行iframe中的javascript方法
2008/10/07 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
js返回上一页并刷新的多种实现方法
2014/02/26 Javascript
响应式表格之固定表头的简单实现
2016/08/26 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
2017/02/05 Javascript
React-Native左右联动List的示例代码
2017/09/21 Javascript
基于js中this和event 的区别(详解)
2017/10/24 Javascript
浅谈vuepress 踩坑记
2018/04/18 Javascript
vue引入axios同源跨域问题
2018/09/27 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
Vue.js组件通信之自定义事件详解
2019/10/19 Javascript
vue中使用vue-print.js实现多页打印
2020/03/05 Javascript
详解js中的原型,原型对象,原型链
2020/07/16 Javascript
JS算法教程之字符串去重与字符串反转
2020/12/15 Javascript
python使用锁访问共享变量实例解析
2018/02/08 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
wxPython实现分隔窗口
2019/11/19 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
python-地图可视化组件folium的操作
2020/12/14 Python
const char*, char const*, char*const的区别是什么
2014/07/09 面试题
linux系统都有哪些运行级别
2016/03/26 面试题
小学生暑假感言
2014/02/06 职场文书
公司年会主持词
2014/03/22 职场文书
单位委托书范本
2014/04/04 职场文书
认购协议书范本
2014/04/22 职场文书
简洁的英文求职信范文
2014/05/03 职场文书
给学校的建议书范文
2014/05/15 职场文书
物业品质提升方案
2014/06/08 职场文书
校本培训个人总结
2015/02/28 职场文书
2015年八一建军节慰问信
2015/03/23 职场文书
师范生小学见习总结
2015/06/23 职场文书
2016优秀教师先进个人事迹材料
2016/02/25 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript