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 模板引擎的注入问题分析
Jan 01 Python
Python获取当前路径实现代码
May 08 Python
win10下Python3.6安装、配置以及pip安装包教程
Oct 01 Python
Python+matplotlib绘制不同大小和颜色散点图实例
Jan 19 Python
详解Python循环作用域与闭包
Mar 21 Python
python 用所有标点符号分隔句子的示例
Jul 15 Python
Django 实现admin后台显示图片缩略图的例子
Jul 28 Python
Django项目后台不挂断运行的方法
Aug 31 Python
创建Shapefile文件并写入数据的例子
Nov 26 Python
解决pycharm下pyuic工具使用的问题
Apr 08 Python
PyTorch dropout设置训练和测试模式的实现
May 27 Python
分享Python异步爬取知乎热榜
Apr 12 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 验证码制作(网树注释思想)
2009/07/20 PHP
解析php通过cookies获取远程网页的指定代码
2013/06/25 PHP
Zend Framework页面缓存实例
2014/06/25 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
2016/08/12 PHP
Javascript 类型转换方法
2010/10/24 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
2015/04/16 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
JS+CSS实现网页加载中的动画效果
2017/10/27 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
2018/06/04 Javascript
利用jqgrid实现上移下移单元格功能
2018/11/07 Javascript
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
2019/04/08 Javascript
vue 点击展开显示更多(点击收起部分隐藏)
2019/04/09 Javascript
javascript设计模式 ? 策略模式原理与用法实例分析
2020/04/21 Javascript
[03:42]2014DOTA2国际邀请赛 第三日比赛排位扑朔迷离
2014/07/12 DOTA
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
Python中对元组和列表按条件进行排序的方法示例
2015/11/10 Python
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
Python实现句子翻译功能
2017/11/14 Python
python多行字符串拼接使用小括号的方法
2020/03/19 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
HTML+CSS3模拟心的跳动实例代码
2017/09/05 HTML / CSS
联想西班牙官网:Lenovo西班牙
2018/08/28 全球购物
预备党员党课思想汇报
2014/01/13 职场文书
幼儿园庆六一活动方案
2014/03/06 职场文书
房屋出售协议书
2014/04/10 职场文书
社会工作专业求职信
2014/07/15 职场文书
餐厅感恩节活动策划方案
2014/10/11 职场文书
挂职个人工作总结
2015/03/05 职场文书
2015年全民国防教育日活动总结
2015/03/23 职场文书
2015年设计师个人工作总结
2015/04/25 职场文书
单位提档介绍信
2015/10/22 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
导游词之蓬莱长岛
2019/12/17 职场文书
用Python远程登陆服务器的步骤
2021/04/16 Python