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网络编程示例(客户端与服务端)
Apr 24 Python
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
Jul 27 Python
windows及linux环境下永久修改pip镜像源的方法
Nov 28 Python
python 遍历字符串(含汉字)实例详解
Apr 04 Python
python实现自动解数独小程序
Jan 21 Python
python环境路径配置以及命令行运行脚本
Apr 02 Python
pandas DataFrame的修改方法(值、列、索引)
Aug 02 Python
Python数据处理篇之Sympy系列(五)---解方程
Oct 12 Python
解决django后台管理界面添加中文内容乱码问题
Nov 15 Python
Python解释器及PyCharm工具安装过程
Feb 26 Python
Python自定义聚合函数merge与transform区别详解
May 26 Python
Python获取浏览器窗口句柄过程解析
Jul 25 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的hash算法介绍
2014/02/13 PHP
php ci框架中加载css和js文件失败的原因及解决方法
2014/07/29 PHP
Codeigniter校验ip地址的方法
2015/03/21 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
2016/03/18 PHP
php实现将base64格式图片保存在指定目录的方法
2016/10/13 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
Ajax+PHP实现的分类列表框功能示例
2019/02/11 PHP
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
关于火狐(firefox)及ie下event获取的两种方法
2012/12/27 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
2015/01/29 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
2016/12/08 Javascript
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
vue表单自定义校验规则介绍
2018/08/28 Javascript
[00:52]DOTA2第二届亚洲邀请赛预选赛宣传片
2017/01/13 DOTA
[52:06]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
用Python中的__slots__缓存资源以节省内存开销的方法
2015/04/02 Python
python django 访问静态文件出现404或500错误
2017/01/20 Python
对Python 除法负数取商的取整方式详解
2018/12/12 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
python列表生成器迭代器实例解析
2019/12/19 Python
python词云库wordCloud使用方法详解(解决中文乱码)
2020/02/17 Python
10行Python代码实现Web自动化管控的示例代码
2020/08/14 Python
如何使用 Python 读取文件和照片的创建日期
2020/09/05 Python
css3 transform导致子元素固定定位变成绝对定位的方法
2020/03/06 HTML / CSS
培训讲师岗位职责
2014/04/13 职场文书
停车位租赁协议书
2014/09/24 职场文书
销售代理协议书
2014/09/30 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
浅谈Redis主从复制以及主从复制原理
2021/05/29 Redis
解决Jenkins集成SonarQube遇到的报错问题
2021/07/15 Java/Android
JavaScript数组 几个常用方法总结
2021/11/11 Javascript