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的迭代器和生成器使用实例
Jan 14 Python
Python中用sleep()方法操作时间的教程
May 22 Python
django通过ajax发起请求返回JSON格式数据的方法
Jun 04 Python
Python实现批量修改文件名实例
Jul 08 Python
Python下的Softmax回归函数的实现方法(推荐)
Jan 26 Python
python检索特定内容的文本文件实例
Jun 05 Python
Python实现快速计算词频功能示例
Jun 25 Python
Django中的forms组件实例详解
Nov 08 Python
浅谈pycharm的xmx和xms设置方法
Dec 03 Python
使用Keras实现简单线性回归模型操作
Jun 12 Python
Opencv常见图像格式Data Type及代码实例
Nov 02 Python
Python3利用openpyxl读写Excel文件的方法实例
Feb 03 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之字符串变相相减的代码
2007/03/19 PHP
php cache类代码(php数据缓存类)
2010/04/15 PHP
php实现可逆加密的方法
2015/08/11 PHP
Symfony2实现从数据库获取数据的方法小结
2016/03/18 PHP
php使用curl实现ftp文件下载功能
2017/05/16 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
JavaScript iframe的相互操作浅析
2009/10/14 Javascript
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
ExtJS TabPanel beforeremove beforeclose使用说明
2010/03/31 Javascript
javascript 循环读取JSON数据的代码
2010/07/17 Javascript
纯JS实现的批量图片预览加载功能
2011/08/14 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
html超链接打开窗口大小的方法
2013/03/05 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
2014/10/14 Javascript
微信小程序 定位到当前城市实现实例代码
2017/02/23 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
2017/12/31 Javascript
Vue配合iView实现省市二级联动的示例代码
2018/07/27 Javascript
react中实现搜索结果中关键词高亮显示
2018/07/31 Javascript
Vue.js的复用组件开发流程完整记录
2018/11/29 Javascript
浅析Vue.js中v-bind v-model的使用和区别
2018/12/04 Javascript
基于Vue实现平滑过渡的拖拽排序功能
2019/06/12 Javascript
[03:03]2014DOTA2西雅图国际邀请赛 Alliance战队巡礼
2014/07/07 DOTA
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
Python 装饰器深入理解
2017/03/16 Python
python 重命名轴索引的方法
2018/11/10 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
Python 画出来六维图
2019/07/26 Python
numba提升python运行速度的实例方法
2021/01/25 Python
浅谈css3中的渐进增强和优雅降级
2017/12/01 HTML / CSS
土木工程师岗位职责
2013/11/24 职场文书
考试退步检讨书
2014/01/15 职场文书
彩色的翅膀教学反思
2014/04/25 职场文书
助学金感谢信
2015/01/20 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书
利用Python第三方库实现预测NBA比赛结果
2021/06/21 Python