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 相关文章推荐
Python使用Mechanize模块编写爬虫的要点解析
Mar 31 Python
Python中绑定与未绑定的类方法用法分析
Apr 29 Python
10招!看骨灰级Pythoner玩转Python的方法
Apr 15 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
Jun 26 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
Sep 11 Python
python__new__内置静态方法使用解析
Jan 07 Python
python机器学习库xgboost的使用
Jan 20 Python
Python 实现向word(docx)中输出
Feb 13 Python
python实现可下载音乐的音乐播放器
Feb 25 Python
Python GUI库PyQt5图形和特效样式QSS介绍
Feb 25 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
Dec 17 Python
python读取excel数据并且画图的实现示例
Feb 08 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
认识并使用PHP超级全局变量
2010/01/26 PHP
php 中英文语言转换类
2011/09/07 PHP
初品cakephp 入门基础
2012/02/16 PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
2012/10/04 PHP
php简单实现MVC
2015/02/05 PHP
php简单实现数组分页的方法
2016/04/30 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
2016/11/04 PHP
PHP按符号截取字符串的指定部分的实现方法
2018/09/10 PHP
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
javascript new fun的执行过程
2010/08/05 Javascript
Jquery attr(&quot;checked&quot;) 返回checked或undefined 获取选中失效
2013/10/10 Javascript
JavaScript将页面表格导出为Excel的具体实现
2013/12/27 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
JS解析XML实例分析
2015/01/30 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
2016/06/22 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
2016/08/15 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
2019/05/14 Javascript
vue-cli3添加模式配置多环境变量的方法
2019/06/05 Javascript
使用p5.js临摹动态图片
2019/11/04 Javascript
详解Vue template 如何支持多个根结点
2020/02/10 Javascript
vue cli 3.0通用打包配置代码,不分一二级目录
2020/09/02 Javascript
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
Python读取Word(.docx)正文信息的方法
2018/03/15 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
使用PyCharm创建Django项目及基本配置详解
2018/10/24 Python
python与mysql数据库交互的实现
2020/01/06 Python
python和go语言的区别是什么
2020/07/20 Python
Linux如何为某个操作添加别名
2015/02/05 面试题
班级学习计划书
2014/04/27 职场文书
安全月宣传标语
2014/10/07 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
交通安全学习心得体会
2016/01/18 职场文书
python工具dtreeviz决策树可视化和模型可解释性
2022/03/03 Python