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 运算符 供重载参考
Jun 11 Python
Python中SOAP项目的介绍及其在web开发中的应用
Apr 14 Python
python搜索指定目录的方法
Apr 29 Python
Python脚本实现自动发带图的微博
Apr 27 Python
Python编程中对super函数的正确理解和用法解析
Jul 02 Python
Python获取当前路径实现代码
May 08 Python
Python模拟用户登录验证
Sep 11 Python
CentOS7下python3.7.0安装教程
Jul 30 Python
python输入整条数据分割存入数组的方法
Nov 13 Python
python之当你发现QTimer不能用时的解决方法
Jun 21 Python
为什么称python为胶水语言
Jun 16 Python
call在Python中改进数列的实例讲解
Dec 09 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
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
PHP程序员不应该忽略的3点
2015/10/09 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
javascript实现的网页局布刷新效果
2008/12/01 Javascript
js输入框邮箱自动提示功能代码实现
2013/12/10 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
2014/03/25 Javascript
jquery实现点击文字可编辑并修改保存至数据库
2014/04/15 Javascript
jQuery中extend()和fn.extend()方法详解
2015/06/03 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
2015/10/29 Javascript
Bootstrap每天必学之表格
2015/11/23 Javascript
利用fecha进行JS日期处理
2016/11/21 Javascript
JS实现的四级密码强度检测功能示例
2017/05/11 Javascript
原生js获取left值和top值的三种方法
2017/08/02 Javascript
详解express与koa中间件模式对比
2017/08/07 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
jquery插件开发模式实例详解
2019/07/20 jQuery
JS面向对象编程实现的拖拽功能案例详解
2020/03/03 Javascript
python正则表达式re模块详细介绍
2014/05/29 Python
python实现井字棋游戏
2020/03/30 Python
Python中的日期时间处理详解
2016/11/17 Python
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
python程序快速缩进多行代码方法总结
2019/06/23 Python
基于python进行抽样分布描述及实践详解
2019/09/02 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
keras实现调用自己训练的模型,并去掉全连接层
2020/06/09 Python
Django contrib auth authenticate函数源码解析
2020/11/12 Python
python读取图片颜色值并生成excel像素画的方法实例
2021/02/19 Python
HTML5 File API改善网页上传功能
2009/08/19 HTML / CSS
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
2013/01/09 HTML / CSS
儿科主治医生个人求职信
2013/09/23 职场文书
三年大学生活自我鉴定
2014/01/21 职场文书
结婚老公保证书
2015/02/26 职场文书
保研推荐信范文
2015/03/25 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
公司酒会主持词
2015/07/02 职场文书
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS