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 相关文章推荐
pygame学习笔记(1):矩形、圆型画图实例
Apr 15 Python
部署Python的框架下的web app的详细教程
Apr 30 Python
Python中利用原始套接字进行网络编程的示例
May 04 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
Jul 30 Python
Python求算数平方根和约数的方法汇总
Mar 09 Python
Python判断某个用户对某个文件的权限
Oct 13 Python
Python 基础教程之包和类的用法
Feb 23 Python
python微信公众号之关注公众号自动回复
Oct 25 Python
python3 写一个WAV音频文件播放器的代码
Sep 27 Python
Django-xadmin+rule对象级权限的实现方式
Mar 30 Python
python爬虫中采集中遇到的问题整理
Nov 27 Python
java关于string最常出现的面试题整理
Jan 18 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
一个颜色轮换的简单例子
2006/10/09 PHP
PHP cdata 处理(详细介绍)
2013/07/05 PHP
PHP使用NuSOAP调用Web服务的方法
2015/07/18 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
php实现小程序支付完整版
2018/10/09 PHP
Ajax+PHP实现的分类列表框功能示例
2019/02/11 PHP
HTTP状态代码以及定义(解释)
2007/02/02 Javascript
javascript实现根据身份证号读取相关信息
2014/12/17 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
2015/04/15 Javascript
JS简单实现多级Select联动菜单效果代码
2015/09/06 Javascript
jQuery toggle 代替方法
2016/03/22 Javascript
使用开源工具制作网页验证码的方法
2016/10/17 Javascript
Es6 写的文件import 起来解决方案详解
2016/12/13 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
vue的列表交错过渡实现代码示例
2019/05/05 Javascript
实现高性能javascript的注意事项
2019/05/27 Javascript
浅析使用Python操作文件
2017/07/31 Python
Python实现PS图像调整颜色梯度效果示例
2018/01/25 Python
Python利用PyPDF2库获取PDF文件总页码实例
2020/04/03 Python
python中time、datetime模块的使用
2020/12/14 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
python 如何用urllib与服务端交互(发送和接收数据)
2021/03/04 Python
检测用户浏览器是否支持CSS3的方法
2009/08/29 HTML / CSS
JAKO-O德国野酷台湾站:德国首屈一指的婴幼童用品品牌
2019/01/14 全球购物
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
EJB2和EJB3在架构上的不同点
2014/09/29 面试题
综合测评自我鉴定
2013/10/08 职场文书
教学器材管理制度
2014/01/26 职场文书
大学运动会通讯稿
2014/01/28 职场文书
临床护士自荐信
2014/01/31 职场文书
工程材料采购方案
2014/05/18 职场文书
医药公司采购员岗位职责
2014/09/12 职场文书
2015年会计个人工作总结
2015/04/02 职场文书
四年级数学教学反思
2016/02/16 职场文书
python实现简单反弹球游戏
2021/04/12 Python