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中的strftime()方法的使用
May 22 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
Dec 12 Python
快速查询Python文档方法分享
Dec 27 Python
PyQt5打开文件对话框QFileDialog实例代码
Feb 07 Python
Python基于TCP实现会聊天的小机器人功能示例
Apr 09 Python
Python2和Python3中urllib库中urlencode的使用注意事项
Nov 26 Python
Numpy之random函数使用学习
Jan 29 Python
python爬虫刷访问量 2019 7月
Aug 01 Python
新手学习Python2和Python3中print不同的用法
Jun 09 Python
Python map及filter函数使用方法解析
Aug 06 Python
sklearn中的交叉验证的实现(Cross-Validation)
Feb 22 Python
Keras多线程机制与flask多线程冲突的解决方案
May 28 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 代码优化之经典示例
2011/03/24 PHP
PHP防止post重复提交数据的简单例子
2014/06/07 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
2014/08/25 PHP
jQuery处理xml格式的返回数据(实例解析)
2013/11/28 Javascript
jQuery实现点击该行即可删除HTML表格行
2014/10/17 Javascript
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
js中利用tagname和id获取元素的方法
2016/01/03 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
jquery删除数组中重复元素
2016/12/05 Javascript
JavaScript自定义分页样式
2017/01/17 Javascript
jquery仿ps颜色拾取功能
2017/03/08 Javascript
bootstrap select插件封装成Vue2.0组件
2017/04/17 Javascript
微信小程序仿朋友圈发布动态功能
2018/07/15 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
小程序如何获取多个formId实现详解
2019/09/20 Javascript
python使用scrapy解析js示例
2014/01/23 Python
用Python计算三角函数之atan()方法的使用
2015/05/15 Python
详解python开发环境搭建
2016/12/16 Python
对Python 语音识别框架详解
2018/12/24 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
Python如何在windows环境安装pip及rarfile
2020/06/15 Python
Python包和模块的分发详细介绍
2020/06/19 Python
Python csv文件记录流程代码解析
2020/07/16 Python
如何真正的了解python装饰器
2020/08/14 Python
使用HTML5进行SVG矢量图形绘制的入门教程
2016/02/19 HTML / CSS
Giglio德国网上精品店:奢侈品服装和配件
2016/09/23 全球购物
香港通票:Hong Kong Pass
2019/02/26 全球购物
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
C语言面试题
2015/10/30 面试题
大学生职业生涯规划大赛作品(精品)
2014/09/17 职场文书
2015年小学辅导员工作总结
2015/05/27 职场文书
《乘法分配律》教学反思
2016/02/24 职场文书
用Python远程登陆服务器的步骤
2021/04/16 Python
nginx+lua单机上万并发的实现
2021/05/31 Servers
Python面向对象之内置函数相关知识总结
2021/06/24 Python
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript