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 相关文章推荐
使用python Fabric动态修改远程机器hosts的方法
Oct 26 Python
PyCharm 设置SciView工具窗口的方法
Jan 15 Python
python设置环境变量的原因和方法
Jun 24 Python
django 中的聚合函数,分组函数,F 查询,Q查询
Jul 25 Python
Django ORM 常用字段与不常用字段汇总
Aug 09 Python
python之PyQt按钮右键菜单功能的实现代码
Aug 17 Python
Python如何将装饰器定义为类
Jul 30 Python
Python远程linux执行命令实现
Nov 11 Python
如何用 Python 子进程关闭 Excel 自动化中的弹窗
May 07 Python
如何在python中实现ECDSA你知道吗
Nov 23 Python
python flappy bird小游戏分步实现流程
Feb 15 Python
Python pyecharts绘制条形图详解
Apr 02 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
PHP实现的带超时功能get_headers函数
2015/02/10 PHP
网页的分页下标生成代码(PHP后端方法)
2016/02/03 PHP
php中str_pad()函数用法分析
2017/03/28 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
2019/06/25 PHP
laravel入门知识点整理
2020/09/15 PHP
子窗口、父窗口和Silverlight之间的相互调用
2010/08/16 Javascript
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
js获取input标签的输入值实现代码
2013/08/05 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
2014/01/09 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
JSONP跨域GET请求解决Ajax跨域访问问题
2014/12/31 Javascript
Jquery中使用show()与hide()方法动画显示和隐藏图片
2015/10/08 Javascript
Node.js插件安装图文教程
2016/05/06 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
Bootstrap Img 图片样式(推荐)
2016/12/13 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
微信小程序实现左右联动的实战记录
2018/07/05 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
2018/12/24 Javascript
Layui Form 自定义验证的实例代码
2019/09/14 Javascript
Python开发编码规范
2006/09/08 Python
基于Python实现的微信好友数据分析
2018/02/26 Python
Python中创建二维数组
2018/10/17 Python
python实现文本界面网络聊天室
2018/12/12 Python
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
Python 实现中值滤波、均值滤波的方法
2019/01/09 Python
django写用户登录判定并跳转制定页面的实例
2019/08/21 Python
Django实现WebSSH操作物理机或虚拟机的方法
2019/11/06 Python
flask的orm框架SQLAlchemy查询实现解析
2019/12/12 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
Python的轻量级ORM框架peewee使用教程
2021/02/05 Python
自主招生自荐信范文
2013/12/04 职场文书
Django 实现jwt认证的示例
2021/04/30 Python
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫