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 19 Python
python中list循环语句用法实例
Nov 10 Python
Python中Django发送带图片和附件的邮件
Mar 31 Python
Python基于property实现类的特性操作示例
Jun 15 Python
python发送告警邮件脚本
Sep 17 Python
解决pyqt5中QToolButton无法使用的问题
Jun 21 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
Jan 06 Python
python批量修改xml属性的实现方式
Mar 05 Python
Selenium 滚动页面至元素可见的方法
Mar 18 Python
Python网页解析器使用实例详解
May 30 Python
Python paramiko使用方法代码汇总
Nov 20 Python
python 实现性别识别
Nov 21 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
迅雷下载《中学科技》怀旧期刊下载
2021/02/27 无线电
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
PHP实现的memcache环形队列类实例
2015/07/28 PHP
php实现过滤字符串中的中文和数字实例
2015/07/29 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
Aster vs KG BO3 第二场2.19
2021/03/10 DOTA
写js时遇到的一些小问题
2010/12/06 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
jQuery中:checkbox选择器用法实例
2015/01/03 Javascript
js点击选择文本的方法
2015/02/09 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
2015/04/12 Javascript
JS功能代码集锦
2016/05/04 Javascript
JavaScript中instanceof运算符的使用示例
2016/06/08 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
BootStrap轻松实现微信页面开发代码分享
2016/10/21 Javascript
从零学习node.js之简易的网络爬虫(四)
2017/02/22 Javascript
详解用webpack2搭建angular2的项目
2017/06/22 Javascript
微信小程序 蓝牙的实现实例代码
2017/06/27 Javascript
随机生成10个不重复的0-100的数字(实例讲解)
2017/08/16 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
在Python中实现贪婪排名算法的教程
2015/04/17 Python
Python ftp上传文件
2016/02/13 Python
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
Python3 Random模块代码详解
2017/12/04 Python
pygame实现俄罗斯方块游戏
2018/06/26 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
Python logging模块原理解析及应用
2020/08/13 Python
Python抓包并解析json爬虫的完整实例代码
2020/11/03 Python
英国买鞋网站:Charles Clinkard
2019/11/14 全球购物
J2SDK1.5与J2SDK5.0有什么区别
2012/09/19 面试题
请解释一下webService? 如何用.net实现webService
2014/06/09 面试题
投资合作协议书范本
2014/04/17 职场文书
2015年五一劳动节演讲稿
2015/03/18 职场文书
2015年办公室个人工作总结
2015/04/20 职场文书
通讯稿范文
2015/07/22 职场文书