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调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
Aug 15 Python
Pthon批量处理将pdb文件生成dssp文件
Jun 21 Python
对Python进行数据分析_关于Package的安装问题
May 22 Python
Python 判断文件或目录是否存在的实例代码
Jul 19 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
Apr 11 Python
安装docker-compose的两种最简方法
Jul 30 Python
pyspark 随机森林的实现
Apr 24 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
May 09 Python
pandas.DataFrame.drop_duplicates 用法介绍
Jul 06 Python
对Python 字典元素进行删除的方法
Jul 31 Python
如何用Python搭建gRPC服务
Jun 30 Python
Python matplotlib多个子图绘制整合
Apr 13 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动态生成版权所有信息的方法
2015/03/24 PHP
使用XHGui来测试PHP性能的教程
2015/07/03 PHP
php实现的任意进制互转类分享
2015/07/07 PHP
php对象工厂类完整示例
2018/08/09 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
javascript实现的listview效果
2007/04/28 Javascript
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
JQuery AJAX提交中文乱码的解决方案
2010/07/02 Javascript
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
2012/11/14 Javascript
jquery 操作css样式、位置、尺寸方法汇总
2014/11/28 Javascript
jQuery代码实现实时获取时间
2017/01/29 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
2017/02/15 Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
2017/04/08 jQuery
vue2中的keep-alive使用总结及注意事项
2017/12/21 Javascript
jQuery中可见性过滤器简单用法示例
2018/03/31 jQuery
判断js数据类型的函数实例详解
2019/05/23 Javascript
Vue的路由及路由钩子函数的实现
2019/07/02 Javascript
在vue中嵌入外部网站的实现
2020/11/13 Javascript
浅析vue中的nextTick
2020/12/28 Vue.js
python 实现网上商城,转账,存取款等功能的信用卡系统
2016/07/15 Python
Python实现文件内容批量追加的方法示例
2017/08/29 Python
pyqt 实现为长内容添加滑轮 scrollArea
2019/06/19 Python
Python的log日志功能及设置方法
2019/07/11 Python
Pytorch之Variable的用法
2019/12/31 Python
详解字符串在Python内部是如何省内存的
2020/02/03 Python
匡威帆布鞋美国官网:Converse美国
2016/08/22 全球购物
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
NFL官方在线商店:NFLShop
2020/07/29 全球购物
为数据库创建索引都需要注意些什么
2012/07/17 面试题
楼面部长岗位职责范本
2014/02/14 职场文书
体育专业求职信
2014/07/16 职场文书
2014年学校领导班子对照检查材料
2014/09/19 职场文书
四风批评与自我批评发言稿
2014/10/14 职场文书
2014年财务经理工作总结
2014/12/08 职场文书
如何利用JavaScript实现二叉搜索树
2021/04/02 Javascript
Redis配置外网可访问(redis远程连接不上)的方法
2022/12/24 Redis