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和perl实现批量对目录下电子书文件重命名的代码分享
Nov 21 Python
Python随手笔记之标准类型内建函数
Dec 02 Python
在windows系统中实现python3安装lxml
Mar 23 Python
python简单线程和协程学习心得(分享)
Jun 14 Python
python 表达式和语句及for、while循环练习实例
Jul 07 Python
python http接口自动化脚本详解
Jan 02 Python
浅谈python3发送post请求参数为空的情况
Dec 28 Python
python3 求约数的实例
Dec 05 Python
Python随机数函数代码实例解析
Feb 09 Python
基于Python爬虫采集天气网实时信息
Jun 05 Python
Python应用实现双指数函数及拟合代码实例
Jun 19 Python
详解python日志输出使用配置文件格式
Feb 10 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四种基础算法代码实例
2013/10/29 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
强制设为首页代码
2006/06/19 Javascript
JavaScript的面向对象(一)
2006/11/09 Javascript
学习YUI.Ext 第三天
2007/03/10 Javascript
JavaScript高级程序设计 读书笔记之十一 内置对象Global
2012/03/07 Javascript
使用jquery读取html5 localstorage的值的方法
2013/01/04 Javascript
js运动框架_包括图片的淡入淡出效果
2013/05/11 Javascript
js AppendChild与insertBefore用法详细对比
2013/12/16 Javascript
JavaScript简单下拉菜单实例代码
2015/09/07 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
JS常见算法详解
2017/02/28 Javascript
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
tangram.js库实现js类的方式实例分析
2018/01/06 Javascript
javascript的惯性运动实现代码实例
2019/09/07 Javascript
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
[19:59]2014DOTA2国际邀请赛 IG战队纪录片
2014/08/07 DOTA
[58:46]OG vs NAVI 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python爬虫框架scrapy实战之爬取京东商城进阶篇
2017/04/24 Python
Python使用Selenium爬取淘宝异步加载的数据方法
2018/12/17 Python
选择Python写网络爬虫的优势和理由
2019/07/07 Python
python按键按住不放持续响应的实例代码
2019/07/17 Python
Tensorflow轻松实现XOR运算的方式
2020/02/03 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
html5 视频播放解决方案
2016/11/06 HTML / CSS
关于解决iframe标签嵌套问题的解决方法
2020/03/04 HTML / CSS
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
Airbnb爱彼迎官网:成为爱彼迎房东,赚取收入
2019/03/14 全球购物
西班牙土拨鼠床垫公司,感觉在云端:Marmota
2019/03/18 全球购物
大学英语演讲稿(中英文对照)
2014/01/14 职场文书
运动会入场词200字
2014/02/15 职场文书
国庆促销活动总结
2014/08/29 职场文书
MySQL表类型 存储引擎 的选择
2021/11/11 MySQL
nginx搭建NFS网络文件系统
2022/04/14 Servers