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 logging模块学习笔记
May 24 Python
Python实现去除代码前行号的方法
Mar 10 Python
分析Python的Django框架的运行方式及处理流程
Apr 08 Python
用Python生成器实现微线程编程的教程
Apr 13 Python
python3 实现的人人影视网站自动签到
Jun 19 Python
Python决策树和随机森林算法实例详解
Jan 30 Python
Python实现全排列的打印
Aug 18 Python
对Python _取log的几种方式小结
Jul 25 Python
python中time库的实例使用方法
Oct 31 Python
python 线性回归分析模型检验标准--拟合优度详解
Feb 24 Python
Anaconda+vscode+pytorch环境搭建过程详解
May 25 Python
详解Selenium 元素定位和WebDriver常用方法
Dec 04 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
SONY SRF-40W电路分析
2021/03/02 无线电
php实现用已经过去多长时间的方式显示时间
2015/06/05 PHP
Atitit.js的键盘按键事件捆绑and事件调度
2016/04/01 Javascript
JavaScript中Promise的使用详解
2017/02/26 Javascript
整理关于Bootstrap警示框的慕课笔记
2017/03/29 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
微信小程序实现全国机场索引列表
2018/01/31 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
[01:32:50]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第一场 1月25日
2021/03/11 DOTA
Python开发WebService系列教程之REST,web.py,eurasia,Django
2014/06/30 Python
Python实现控制台进度条功能
2016/01/04 Python
Python2.x与Python3.x的区别
2016/01/14 Python
使用Mixin设计模式进行Python编程的方法讲解
2016/06/21 Python
python logging 日志轮转文件不删除问题的解决方法
2016/08/02 Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
2018/03/15 Python
Flask Web开发入门之文件上传(八)
2018/08/17 Python
Python对切片命名的实现方法
2018/10/16 Python
解决Python 使用h5py加载文件,看不到keys()的问题
2019/02/08 Python
python time.sleep()是睡眠线程还是进程
2019/07/09 Python
使用django的ORM框架按月统计近一年内的数据方法
2019/07/18 Python
Python partial函数原理及用法解析
2019/12/11 Python
python飞机大战 pygame游戏创建快速入门详解
2019/12/17 Python
小学优秀辅导员事迹材料
2014/05/11 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
政风行风建设整改方案
2014/10/27 职场文书
生日宴会祝酒词
2015/08/10 职场文书
环保建议书作文400字
2015/09/14 职场文书
2016入党心得体会范文
2016/01/06 职场文书
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis