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 数据的清理行为实例详解
Jul 12 Python
matplotlib设置legend图例代码示例
Dec 19 Python
python正则表达式面试题解答
Apr 28 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
Jun 04 Python
对Python的交互模式和直接运行.py文件的区别详解
Jun 29 Python
DJANGO-URL反向解析REVERSE实例讲解
Oct 25 Python
通过实例了解Python str()和repr()的区别
Jan 17 Python
python随机生成大小写字母数字混合密码(仅20行代码)
Feb 01 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
Feb 11 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
Jul 30 Python
python如何快速拼接字符串
Oct 28 Python
python之基数排序的实现
Jul 26 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中通过语义URL防止网站被攻击的方法分享
2011/09/08 PHP
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
Django 标签筛选的实现代码(一对多、多对多)
2018/09/05 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
javascript得到XML某节点的子节点个数的脚本
2008/10/11 Javascript
window.name代替cookie的实现代码
2010/11/28 Javascript
基于jQuery的360图片展示实现代码
2012/06/14 Javascript
简单实例处理url特殊符号&amp;处理(2种方法)
2013/04/02 Javascript
Javascript 颜色渐变效果的实现代码
2013/10/01 Javascript
自己封装的javascript事件队列函数版
2014/06/12 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
Javascript 实现放大镜效果实例详解
2016/12/03 Javascript
深入理解Javascript中的观察者模式
2017/02/20 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
JavaScript对JSON数组简单排序操作示例
2019/01/31 Javascript
js+html5 canvas实现ps钢笔抠图
2019/04/28 Javascript
jQuery实现动态生成年月日级联下拉列表示例
2019/05/11 jQuery
element ui分页多选,翻页记忆的实例
2019/09/03 Javascript
Python下的Softmax回归函数的实现方法(推荐)
2017/01/26 Python
Python操作Oracle数据库的简单方法和封装类实例
2018/05/07 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
Python简易计算器制作方法代码详解
2019/10/31 Python
Django使用消息提示简单的弹出个对话框实例
2019/11/15 Python
python上下文管理器异常问题解决方法
2021/02/07 Python
屈臣氏俄罗斯在线商店:Watsons俄罗斯
2020/08/03 全球购物
请用Java实现列出某个目录下的所有文件
2013/09/23 面试题
公司财务总监岗位职责
2013/12/14 职场文书
电焊工岗位职责
2014/03/06 职场文书
工商企业管理专业自荐信范文
2014/04/12 职场文书
村级换届选举方案
2014/05/10 职场文书
初中作文评语集锦
2014/12/25 职场文书
就业导师推荐信范文
2015/03/27 职场文书
亮剑观后感500字
2015/06/05 职场文书
在 Golang 中实现 Cache::remember 方法详解
2021/03/30 Python
WINDOWS下安装mysql 8.x 的方法图文教程
2022/04/19 MySQL