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中的正则表达式的用法
Apr 09 Python
在Django的URLconf中使用命名组的方法
Jul 18 Python
python下载文件记录黑名单的实现代码
Oct 24 Python
python实现百度语音识别api
Apr 10 Python
对numpy.append()里的axis的用法详解
Jun 28 Python
python获取地震信息 微信实时推送
Jun 18 Python
linux环境下Django的安装配置详解
Jul 22 Python
python中property和setter装饰器用法
Dec 19 Python
Django ORM filter() 的运用详解
May 14 Python
python excel和yaml文件的读取封装
Jan 12 Python
python如何利用cv2模块读取显示保存图片
Jun 04 Python
python模板入门教程之flask Jinja
Apr 11 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
SMARTY学习手记
2007/01/04 PHP
php pcntl_fork和pcntl_fork 的用法
2009/04/13 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
PHP输入流php://input实例讲解
2015/12/22 PHP
PHP微信支付实例解析
2016/07/22 PHP
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
Jquery cookie操作代码
2010/03/14 Javascript
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
2011/06/28 Javascript
Jquery阻止事件冒泡 event.stopPropagation
2011/12/11 Javascript
JavaScript forEach()遍历函数使用及介绍
2015/07/08 Javascript
jQuery Validate初步体验(一)
2015/12/12 Javascript
直接拿来用的页面跳转进度条JS实现
2016/01/06 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
2016/06/08 Javascript
JS获取随机数和时间转换的简单实例
2016/07/10 Javascript
谈谈JavaScript数组常用方法总结
2017/01/24 Javascript
JS实现向iframe中表单传值的方法
2017/03/24 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
JavaScript实现数字前补“0”的五种方法示例
2019/01/03 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
Python字符串替换实例分析
2015/05/11 Python
Python实现的堆排序算法原理与用法实例分析
2017/11/22 Python
分享一个简单的python读写文件脚本
2017/11/25 Python
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
2019/04/03 Python
详解python--模拟轮盘抽奖游戏
2019/04/12 Python
python的等深分箱实例
2019/11/22 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
iHerb台湾:维生素、保健品和健康产品
2018/01/31 全球购物
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
动物学专业毕业生求职信
2013/10/11 职场文书
小区文明倡议书
2014/05/16 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
left join、inner join、right join的区别
2021/04/05 MySQL
数据库之SQL技巧整理案例
2021/07/07 SQL Server
vue中 this.$set的使用详解
2021/11/17 Vue.js
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers