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 03 Python
Python创建xml文件示例
Mar 22 Python
python difflib模块示例讲解
Sep 13 Python
使用Python进行AES加密和解密的示例代码
Feb 02 Python
使用Python自动化破解自定义字体混淆信息的方法实例
Feb 13 Python
Python如何调用外部系统命令
Aug 07 Python
python如何基于redis实现ip代理池
Jan 17 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
Feb 17 Python
Python工程师必考的6个经典面试题
Jun 28 Python
Django中Q查询及Q()对象 F查询及F()对象用法
Jul 09 Python
Python爬虫实战之爬取携程评论
Jun 02 Python
Python何绘制带有背景色块的折线图
Apr 23 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
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
javascript 常用方法总结
2009/06/03 Javascript
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
jquery时间下拉框小例子
2013/04/15 Javascript
Js判断参数(String,Array,Object)是否为undefined或者值为空
2013/11/04 Javascript
浅谈重写window对象的方法
2014/12/29 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
javascript中checkbox使用方法简单实例演示
2015/11/17 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
2016/05/17 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
JavaScript调试的多个必备小Tips
2017/01/15 Javascript
原生js实现瀑布流布局
2017/03/08 Javascript
vue.js中过滤器的使用教程
2017/06/08 Javascript
vue实现div拖拽互换位置
2020/07/29 Javascript
React通过redux-persist持久化数据存储的方法示例
2019/02/14 Javascript
用Node写一条配置环境的指令
2019/11/14 Javascript
使用Vue生成动态表单
2019/11/26 Javascript
微信小程序服务器日期格式化问题
2020/01/07 Javascript
Python中使用item()方法遍历字典的例子
2014/08/26 Python
理解Python中函数的参数
2015/04/27 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
2019/08/09 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
2020/03/03 Python
Python 合并拼接字符串的方法
2020/07/28 Python
Python爬虫代理池搭建的方法步骤
2020/09/28 Python
纽约香氛品牌:NEST Fragrance
2018/10/15 全球购物
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
广州足迹信息技术有限公司Java软件工程师试题
2014/02/15 面试题
银行类自荐信
2014/02/04 职场文书
高二学年自我鉴定范文(2篇)
2014/09/26 职场文书
小学生差生评语
2014/12/29 职场文书
寻衅滋事罪辩护词
2015/05/21 职场文书
大学生社会实践感想
2015/08/11 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书
Django路由层如何获取正确的url
2021/07/15 Python
Nginx缓存设置案例详解
2021/09/15 Servers