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之Python文档
Oct 10 Python
Django自定义插件实现网站登录验证码功能
Apr 19 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
Jul 30 Python
轻量级的Web框架Flask 中模块化应用的实现
Sep 11 Python
使用apidocJs快速生成在线文档的实例讲解
Feb 07 Python
Python文件监听工具pyinotify与watchdog实例
Oct 15 Python
Python中调用其他程序的方式详解
Aug 06 Python
自定义django admin model表单提交的例子
Aug 23 Python
Python 单例设计模式用法实例分析
Sep 23 Python
python基于opencv检测程序运行效率
Dec 28 Python
python模拟预测一下新型冠状病毒肺炎的数据
Feb 01 Python
Pandas之read_csv()读取文件跳过报错行的解决
Apr 21 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下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
2011/09/19 PHP
记录mysql性能查询过程的使用方法
2013/05/02 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
2015/03/25 PHP
CI框架支持$_GET的两种实现方法
2016/05/18 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
JavaScript mapreduce工作原理简析
2012/11/25 Javascript
利用div+jquery自定义滚动条样式的2种方法
2013/07/18 Javascript
json字符串之间的相互转换示例代码
2014/08/21 Javascript
利用a标签自动解析URL分析网址实例
2014/10/20 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
2017/01/10 Javascript
详解ECMAScript6入门--Class对象
2017/04/27 Javascript
Angular.JS中select下拉框设置value的方法
2017/06/20 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
浅谈vue,angular,react数据双向绑定原理分析
2017/11/28 Javascript
three.js 入门案例详解
2018/01/23 Javascript
vue axios登录请求拦截器
2018/04/02 Javascript
Angular HMR(热模块替换)功能实现方法
2018/04/04 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
2018/12/05 jQuery
详解在HTTPS 项目中使用百度地图 API
2019/04/26 Javascript
微信小程序tab切换可滑动切换导航栏跟随滚动实现代码
2019/09/04 Javascript
jQuery实现飞机大战小游戏
2020/07/05 jQuery
小结Python用fork来创建子进程注意事项
2014/07/03 Python
pycharm远程linux开发和调试代码的方法
2018/07/17 Python
python实现银行管理系统
2019/10/25 Python
flask 框架操作MySQL数据库简单示例
2020/02/02 Python
Python如何基于Tesseract实现识别文字功能
2020/06/05 Python
获取python运行输出的数据并解析存为dataFrame实例
2020/07/07 Python
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
阿玛尼意大利官网:Armani意大利
2018/10/30 全球购物
匈牙利最大的健身制造商和销售商:inSPORTline
2018/10/30 全球购物
小学教师师德师风个人整改措施
2014/09/18 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android