python和bash统计CPU利用率的方法


Posted in Python onJuly 10, 2015

本文实例讲述了python和bash统计CPU利用率的方法。分享给大家供大家参考。具体如下:

开始的时候写了一个 bash 的实现;
因为最近也在学习 python ,所以就尝试着用 python 再实现一回;
支援 python2 环境;
请各位给予下建议,有什么改良的地方可以提一下,不甚感激;

Python代码如下:

#!/usr/bin/python
# -*- coding:utf8 -*-
__author__ = 'chenwx'
def cpu_rate():
  import time
  def cpu_r():
    f = open("/proc/stat","r")
    for f_line in f:
      break
    f.close()
    f_line = f_line.split(" ")
    f_line_a=[]
    for i in f_line:
      if i.isdigit():
        i=int(i)
        f_line_a.append(i)
    total = sum(f_line_a)
    idle = f_line_a[3]
    return total,idle
  total_a,idle_a=cpu_r()
  time.sleep(2)
  total_b,idle_b=cpu_r()
  sys_idle = idle_b - idle_a
  sys_total = total_b - total_a
  sys_us = sys_total - sys_idle
  cpu_a = (float(sys_us)/sys_total)*100
  return cpu_a
# print cpu_rate()

bash的实现方式:

#!/bin/bash
# 感觉计算数组这里应该还有办法简化的吧;
# 我一时没想到,请大家提一下建议,多谢;
cpu_a=(`grep 'cpu ' /proc/stat`)
total_a=$((${cpu_a[1]}+${cpu_a[2]}+${cpu_a[3]}+${cpu_a[4]}+${cpu_a[5]}+${cpu_a[6]}+${cpu_a[7]}+${cpu_a[8]}+${cpu_a[9]}))
idle_a=${cpu_a[4]}
sleep 5
cpu_b=(`grep 'cpu ' /proc/stat`)
total_b=$((${cpu_b[1]}+${cpu_b[2]}+${cpu_b[3]}+${cpu_b[4]}+${cpu_b[5]}+${cpu_b[6]}+${cpu_b[7]}+${cpu_b[8]}+${cpu_b[9]}))
idle_b=${cpu_b[4]}
sys_idle=$(($idle_b-$idle_a))
sys_total=$(($total_b-$total_a))
sys_us=$(($sys_total-$sys_idle))
echo "scale=2;$sys_us/$sys_total*100" | bc

遍历数组的方法:

# 找到了解决数组计算的办法了,不过感觉for循环计算的方式还是有些繁琐;
# 不知道有没有那种对数组内所有值一并计算的方法;
cpu_rate_a () {
cpu_a=(`grep 'cpu ' /proc/stat`)
for i in ${cpu_a[@]:1}
do
  total_a=$(($total_a+$i))
done
idle_a=${cpu_a[4]}
sleep 5
cpu_b=(`grep 'cpu ' /proc/stat`)
for i in ${cpu_b[@]:1}
do
  total_b=$(($total_b+$i))
done
idle_b=${cpu_b[4]}
sys_idle=$(($idle_b-$idle_a))
sys_total=$(($total_b-$total_a))
sys_us=$(($sys_total-$sys_idle))
local_cpu_rate=$(echo "scale=2;$sys_us/$sys_total*100" | bc)
}

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python中实现远程调用(RPC、RMI)简单例子
Apr 28 Python
在Python下使用Txt2Html实现网页过滤代理的教程
Apr 11 Python
python获取本地计算机名字的方法
Apr 29 Python
Django实现组合搜索的方法示例
Jan 23 Python
python+pandas+时间、日期以及时间序列处理方法
Jul 10 Python
在PYQT5中QscrollArea(滚动条)的使用方法
Jun 14 Python
给Python学习者的文件读写指南(含基础与进阶)
Jan 29 Python
python 在threading中如何处理主进程和子线程的关系
Apr 25 Python
python可以用哪些数据库
Jun 22 Python
用python绘制樱花树
Oct 09 Python
如何设置PyCharm中的Python代码模版(推荐)
Nov 20 Python
python 实现表情识别
Nov 21 Python
Python多线程下载文件的方法
Jul 10 #Python
Python爬取国外天气预报网站的方法
Jul 10 #Python
Python实现比较两个文件夹中代码变化的方法
Jul 10 #Python
python简单文本处理的方法
Jul 10 #Python
Python实现把json格式转换成文本或sql文件
Jul 10 #Python
Python中的一些陷阱与技巧小结
Jul 10 #Python
Python中的fileinput模块的简单实用示例
Jul 09 #Python
You might like
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
2007/03/15 PHP
php chr() ord()中文截取乱码问题解决方法
2008/09/08 PHP
php xml实例 留言本
2009/03/20 PHP
php Smarty 字符比较代码
2011/02/27 PHP
关于PHP自动判断字符集并转码的详解
2013/06/26 PHP
微信 开发生成带参数的二维码的实例
2016/11/23 PHP
看了就知道什么是JSON
2007/12/09 Javascript
javascript 鼠标拖动图标技术
2010/02/07 Javascript
jquery 表格分页等操作实现代码(pagedown,pageup)
2010/04/11 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
完美兼容各大浏览器获取HTTP_REFERER方法总结
2014/06/24 Javascript
nodejs 实现模拟form表单上传文件
2014/07/14 NodeJs
js使用split函数按照多个字符对字符串进行分割的方法
2015/03/20 Javascript
JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
2015/09/15 Javascript
js实现瀑布流效果(自动生成新的内容)
2017/03/16 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
Angular.js自动化测试之protractor详解
2017/07/07 Javascript
vue返回上一页面时回到原先滚动的位置的方法
2018/12/20 Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
2019/06/05 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
2019/11/17 Javascript
javascript设计模式之装饰者模式
2020/01/30 Javascript
微信小程序保持session会话的方法
2020/03/20 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
[05:02][DOTA2]DOTA进化论 第一期
2013/09/27 DOTA
Python strip lstrip rstrip使用方法
2008/09/06 Python
python33 urllib2使用方法细节讲解
2013/12/03 Python
python获取当前日期和时间的方法
2015/04/30 Python
python和c语言的主要区别总结
2019/07/07 Python
HTML5 canvas基本绘图之绘制阴影效果
2016/06/27 HTML / CSS
优质护理服务演讲稿
2014/05/07 职场文书
2015元旦文艺汇演主持稿(开场白+结束语)
2014/12/14 职场文书
安全先进个人材料
2014/12/29 职场文书
贷款承诺书
2015/01/20 职场文书
无罪辩护词范文
2015/05/21 职场文书
惊天动地观后感
2015/06/10 职场文书
5个实用的JavaScript新特性
2022/06/16 Javascript