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 相关文章推荐
把MySQL表结构映射为Python中的对象的教程
Apr 07 Python
python实现合并两个数组的方法
May 16 Python
Python语言实现机器学习的K-近邻算法
Jun 11 Python
13个最常用的Python深度学习库介绍
Oct 28 Python
Python打印输出数组中全部元素
Mar 13 Python
python实现自动解数独小程序
Jan 21 Python
python通过文本在一个图中画多条线的实例
Feb 21 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
Mar 01 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
Apr 30 Python
python实现画图工具
Aug 27 Python
详解OpenCV曝光融合
Apr 29 Python
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
May 04 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
PHP中$_SERVER的详细参数与说明介绍
2013/10/26 PHP
php常用hash加密函数
2014/11/22 PHP
Yii核心验证器api详解
2016/11/23 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
HTML颜色选择器实现代码
2010/11/23 Javascript
javasctipt如何显示几分钟前、几天前等
2014/04/30 Javascript
浅谈Javascript中匀速运动的停止条件
2014/12/19 Javascript
javascript框架设计之框架分类及主要功能
2015/06/23 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
2016/04/12 Javascript
使用JS中的exec()方法构造正则表达式验证
2016/08/01 Javascript
js 递归和定时器的实例解析
2017/02/03 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
2017/07/13 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
理解javascript async的用法
2017/08/22 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
python Socket之客户端和服务端握手详解
2017/09/18 Python
Python实现删除排序数组中重复项的两种方法示例
2019/01/31 Python
Python创建字典的八种方式
2019/02/27 Python
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
欧洲第一中国智能手机和平板电脑网上商店:CECT-SHOP
2018/01/08 全球购物
美国球鞋寄卖网站:Stadium Goods
2018/05/09 全球购物
阿里巴巴Oracle DBA笔试题答案-备份恢复类
2013/11/20 面试题
会计岗位职责
2013/11/08 职场文书
报社实习生自荐信
2014/01/24 职场文书
计算机学生求职信范文
2014/01/30 职场文书
乡镇领导班子四风对照检查材料
2014/09/27 职场文书
教师党员学习十八届四中全会思想汇报
2014/11/03 职场文书
运动会开幕词
2015/01/28 职场文书
综合测评个人总结
2015/03/03 职场文书
法律意见书范文
2015/05/20 职场文书
经营场所证明范本
2015/06/19 职场文书
学校学习型党组织建设心得体会
2019/06/21 职场文书
nginx访问报403错误的几种情况详解
2022/07/23 Servers