获得CPU利用率(python调用top命令实现)
来源:互联网 发布:linux shell 发送邮件 编辑:程序博客网 时间:2024/05/16 05:11
获得CPU利用率(python调用top命令实现)
本文定位:想通过python调用top命令获取cpu使用率但暂时没有思路的情况。
如果单纯为了获得cpu的利用率,通过top命令重定向可以轻松实现,命令如下:
top -bi > cpuHistory.log或top -bi | tee cpuHistory.log
这个就不解释了,不懂的朋友查询下top的帮助文档。这里要实现的是通过python调用top命令,并获得cpu的利用率信息。
用过popen的朋友很快就能想到类似如下的代码(这个是我第一次写的代码,*_*):
1 #! /usr/bin/python2 3 import os,time4 5 time2sleep = 1.56 while True:7 print os.popen('top -bi -n 1').read().split('\n')[2]8 time.sleep(time2sleep)
原理看起来没错,可是跑起来就出问题了:cpu的idle值一直不变!!!
原因在于执行的命令“top -bi -n 1”:单独执行这个命令,你会发现输出结果中cpu的idle值就是一直不变的。
所以不能这样写……
在终端执行“top -bi -n 2”命令,你会发现第二个值每次都在变化,这个就是我们想要结果。
考虑到时间问题,命令这样写会更好:“top -bi -n 2 -d 0.02”
代码如下:
1 #! /usr/bin/python 2 ''' 3 File : cpuRate.py 4 Author : Mike 5 E-Mail : Mike_Zhang@live.com 6 ''' 7 import os,time 8 9 time2sleep = 2.510 while True:11 print int(time.time()),12 print os.popen('top -bi -n 2 -d 0.02').read().split('\n\n\n')[1].split('\n')[2]13 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%st1328109441 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%st1328109444 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%st1328109447 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
好,就这些了,希望对你有帮助。
0 0
- 获得CPU利用率(python调用top命令实现)
- 服务器top命令cpu利用率1000%状况
- Linux中,top命令查看CPU利用率
- C#获得Cpu 利用率
- 查看linux cpu和内存利用率__linux - top命令
- linux下用top命令查看cpu利用率超过100%
- linux下用top命令查看cpu利用率超过100%
- 查看linux cpu和内存利用率__linux - top命令
- linux下用top命令查看cpu利用率超过100%
- linux下用top命令查看cpu利用率超过100%
- linux下CPU利用率的控制(Python实现)
- 用Pdh库获得CPU利用率
- 用Pdh库获得CPU利用率
- 用Pdh库获得CPU利用率
- Linux下获得CPU利用率和内存使用情况(C实现)
- Linux下获得CPU利用率和内存使用情况(C实现)
- Linux下获得CPU利用率和内存使用情况(C实现)
- Linux下获得CPU利用率和内存使用情况(C实现)
- 元旦你有什么计划
- Python获取CPU使用率、内存使用率、网络使用状态
- 查找WebSphere Application Server 管理控制台端口号
- 单击网页中的按钮,弹出对话框
- 啊实打实的发生大事的期望的前雾灯
- 获得CPU利用率(python调用top命令实现)
- -详解深拷贝与浅拷贝及拷贝构造的建构
- IO中使用缓冲读写操作控制台数据的newLine()方法
- 按时到达士大夫撒绯闻绯闻绯闻绯闻绯闻绯闻
- 额的符文飞洒的委屈的期望的期望的期望的未取得
- VS2012编译的C/C++程序不能在Windows XP上运行的解决方案
- C++_直接插入排序
- jar包如何安装到本地仓库
- NetBeans8.0启动tomcat8.1.15失败--'127.0.0.1' 不是内部或外部命令