Linux下使用python调用top命令获得CPU利用率


Posted in Python onMarch 10, 2015

本文定位:想通过python调用top命令获取cpu使用率但暂时没有思路的情况。
如果单纯为了获得cpu的利用率,通过top命令重定向可以轻松实现,命令如下:

top -bi > cpuHistory.log


top -bi | tee  cpuHistory.log

这个就不解释了,不懂的朋友查询下top的帮助文档。这里要实现的是通过python调用top命令,并获得cpu的利用率信息。
用过popen的朋友很快就能想到类似如下的代码(这个是我第一次写的代码,*_*):
#! /usr/bin/python
import os,time
time2sleep = 1.5

while True:

        print os.popen('top -bi -n 1').read().split('\n')[2]

        time.sleep(time2sleep)

原理看起来没错,可是跑起来就出问题了:cpu的idle值一直不变!!!
原因在于执行的命令“top -bi -n 1”:单独执行这个命令,你会发现输出结果中cpu的idle值就是一直不变的。
所以不能这样写……
在终端执行“top -bi -n 2”命令,你会发现第二个值每次都在变化,这个就是我们想要结果。
考虑到时间问题,命令这样写会更好:“top -bi -n 2 -d 0.02”
代码如下:

#! /usr/bin/python

'''

   File      : cpuRate.py

   Author    : Mike

   E-Mail    : Mike_Zhang@live.com

 '''

import os,time
time2sleep = 2.5

while True:

        print int(time.time()),

        print os.popen('top -bi -n 2 -d 0.02').read().split('\n\n\n')[1].split('\n')[2]

        time.sleep(time2sleep)

执行效果如下:

$ ./cpuRate.py 

1328109437 Cpu(s): 10.0%us, 20.0%sy,  0.0%ni, 70.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

1328109441 Cpu(s):  0.0%us, 16.7%sy,  0.0%ni, 83.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

1328109444 Cpu(s):  0.0%us, 16.7%sy,  0.0%ni, 83.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

1328109447 Cpu(s): 12.5%us, 12.5%sy,  0.0%ni, 75.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

好,就这些了,希望对你有帮助。

Python 相关文章推荐
如何搜索查找并解决Django相关的问题
Jun 30 Python
Python中使用SAX解析xml实例
Nov 21 Python
Python函数中*args和**kwargs来传递变长参数的用法
Jan 26 Python
Python标准库之itertools库的使用方法
Sep 07 Python
Python学习之Django的管理界面代码示例
Feb 10 Python
Python使用Phantomjs截屏网页的方法
May 17 Python
Python 窗体(tkinter)按钮 位置实例
Jun 13 Python
python plotly绘制直方图实例详解
Jul 22 Python
Python如何使用Gitlab API实现批量的合并分支
Nov 27 Python
python 模拟登录B站的示例代码
Dec 15 Python
基于Python的接口自动化读写excel文件的方法
Jan 15 Python
Python 装饰器(decorator)常用的创建方式及解析
Apr 24 Python
Python获取DLL和EXE文件版本号的方法
Mar 10 #Python
Python接收Gmail新邮件并发送到gtalk的方法
Mar 10 #Python
Python创建xml的方法
Mar 10 #Python
Python实现生成简单的Makefile文件代码示例
Mar 10 #Python
Python和GO语言实现的消息摘要算法示例
Mar 10 #Python
Windows和Linux下使用Python访问SqlServer的方法介绍
Mar 10 #Python
Python脚本实现代码行数统计代码分享
Mar 10 #Python
You might like
收音机玩机评测 406 篇视频合集
2020/03/11 无线电
php实现加减法验证码代码
2014/02/14 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
Ubuntu上安装yaf扩展的方法
2018/01/29 PHP
表格 隔行换色升级版
2009/11/07 Javascript
jQuery each()小议
2010/03/18 Javascript
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
2012/10/11 Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
2012/12/07 Javascript
javascript 数组排序函数sort和reverse使用介绍
2013/11/21 Javascript
javascript实现仿IE顶部的可关闭警告条
2015/05/05 Javascript
jQuery表格插件datatables用法详解
2020/11/23 Javascript
浅析Bootstrap验证控件的使用
2016/06/23 Javascript
Angular使用$http.jsonp发送跨站请求的方法
2017/03/16 Javascript
vue实现文章内容过长点击阅读全文功能的实例
2017/12/28 Javascript
Vue-Router的使用方法
2018/09/05 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
2019/07/10 jQuery
简单了解JS打开url的方法
2020/02/21 Javascript
JavaScript实现缓动动画
2020/11/25 Javascript
小程序中手机号识别的示例
2020/12/14 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
Python中的包和模块实例
2014/11/22 Python
Python中splitlines()方法的使用简介
2015/05/20 Python
python 根据正则表达式提取指定的内容实例详解
2016/12/04 Python
Python脚本获取操作系统版本信息
2016/12/17 Python
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
新手常见6种的python报错及解决方法
2018/03/09 Python
python 三元运算符使用解析
2019/09/16 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
Django权限控制的使用
2021/01/07 Python
韩国保养品、日本药妆购物网:小三美日
2018/12/30 全球购物
年会搞笑主持词
2014/03/27 职场文书
师恩难忘教学反思
2014/04/27 职场文书
品牌服务方案
2014/06/03 职场文书
如何写辞职书
2015/02/26 职场文书
用python自动生成日历
2021/04/24 Python
Oracle数据库事务的开启与结束详解
2022/06/25 Oracle