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除法运算小技巧
Apr 05 Python
Python的Django框架中if标签的相关使用
Jul 15 Python
基python实现多线程网页爬虫
Sep 06 Python
python 垃圾收集机制的实例详解
Aug 20 Python
详谈python3 numpy-loadtxt的编码问题
Apr 29 Python
Django框架验证码用法实例分析
May 10 Python
实现Python与STM32通信方式
Dec 18 Python
python学习笔记之多进程
Aug 06 Python
Python从文件中读取数据的方法步骤
Nov 18 Python
python实现调用摄像头并拍照发邮箱
Apr 27 Python
Python基于百度AI实现抓取表情包
Jun 27 Python
Anaconda配置各版本Pytorch的实现
Aug 07 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 empty(),isset(),is_null()的实例测试详解
2013/06/06 PHP
解析Win7 XAMPP apache无法启动的问题
2013/06/26 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
2016/02/14 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
php微信公众号开发之图片回复
2018/10/20 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
用JQUERY增删元素的代码
2012/02/14 Javascript
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
javaScript 计算两个日期的天数相差(示例代码)
2013/12/27 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
Javascript中拼接大量字符串的方法
2015/02/05 Javascript
使用JavaScript 实现的人脸检测
2015/03/24 Javascript
JavaScript动态添加style节点的方法
2015/06/09 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
ES6通过babel转码使用webpack使用import关键字
2016/12/13 Javascript
Javascript自定义事件详解
2017/01/13 Javascript
基于angular2 的 http服务封装的实例代码
2017/06/29 Javascript
Node.js 使用jade模板引擎的示例
2018/05/11 Javascript
JS严格模式原理与用法实例分析
2020/04/27 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
python实现简单socket程序在两台电脑之间传输消息的方法
2015/03/13 Python
对python 多个分隔符split 的实例详解
2018/12/20 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
2019/01/29 Python
python禁用键鼠与提权代码实例
2019/08/16 Python
django drf框架自带的路由及最简化的视图
2019/09/10 Python
Python内置类型性能分析过程实例
2020/01/29 Python
Python 解决相对路径问题:"No such file or directory"
2020/06/05 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
Python学习之路安装pycharm的教程详解
2020/06/17 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
2020/09/14 Python
HTML5 微格式和相关的属性名称
2010/02/10 HTML / CSS
2016年小学生清明节广播稿
2015/12/17 职场文书
新手必备Python开发环境搭建教程
2021/05/28 Python
java设计模式--三种工厂模式详解
2021/07/21 Java/Android