Python获取单个程序CPU使用情况趋势图


Posted in Python onMarch 10, 2015

本文定位:已将CPU历史数据存盘,等待可视化进行分析,可暂时没有思路。
前面一篇文章(https://3water.com/article/61956.htm)提到过在linux下如何用python将top命令的结果进行存盘,本文是它的后续。

python中我们可以用matplotlib很方便的将数据可视化,比如下面的代码:

import matplotlib.pyplot as plt
list1 = [1,2,3]

list2 = [4,5,9]

plt.plot(list1,list2)

plt.show()

执行效果如下:

Python获取单个程序CPU使用情况趋势图

上面只是给plot函数传了两个list数据结构,show一下图形就出来了……哈哈,很方便吧!
获取CPU趋势图就用这个了!
可我们现在得到的数据没那么友好,比如我现在有个文件(file.txt),内容如下:

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

Cpu(s): 7.7%us, 7.7%sy, 0.0%ni, 76.9%id, 0.0%wa, 0.0%hi, 7.7%si, 0.0%st

Cpu(s): 0.0%us, 9.1%sy, 0.0%ni, 90.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

Cpu(s): 9.1%us, 0.0%sy, 0.0%ni, 90.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

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

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

Cpu(s): 0.0%us, 9.1%sy, 0.0%ni, 90.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

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

其中,第一列为时间,第六列为CPU的idle值。

要从这组数据中得出CPU使用情况趋势图,我们就要做些工作了。

下面是代码,这里提供一个思路,需要的朋友拷回去改一下吧:

#coding:utf-8

'''

      File      : cpuUsage.py

      Author    : Mike

      E-Mail    : Mike_Zhang@live.com

'''

import matplotlib.pyplot as plt

import string
def getCpuInfData(fileName):

    ret = {}

    f = open(fileName,"r")

    lineList = f.readlines()

    for line in lineList:

        tmp = line.split()

        sz = len(tmp)

        t_key = string.atoi(tmp[0]) # 得到key

        t_value = 100.001-string.atof(line.split(':')[1].split(',')[3].split('%')[0]) # 得到value

        print t_key,t_value    

        if not ret.has_key(t_key) :

            ret[t_key] = []

        ret[t_key].append(t_value)

    f.close()

    return ret

    

retMap1 = getCpuInfData("file.txt")

# 生成CPU使用情况趋势图

list1 = retMap1.keys()

list1.sort() 

list2 = []

for i in list1:list2.append(retMap1[i])

plt.plot(list1,list2)

plt.show()

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

Python 相关文章推荐
Python第三方库的安装方法总结
Jun 06 Python
Django自定义插件实现网站登录验证码功能
Apr 19 Python
python实现八大排序算法(2)
Sep 14 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
Feb 08 Python
对Django 转发和重定向的实例详解
Aug 06 Python
Django配置MySQL数据库的完整步骤
Sep 07 Python
Python自动化测试笔试面试题精选
Mar 12 Python
python查看矩阵的行列号以及维数方式
May 22 Python
django 模型字段设置默认值代码
Jul 15 Python
Python基于callable函数检测对象是否可被调用
Oct 16 Python
浅谈Python项目的服务器部署
Apr 25 Python
Python机器学习实战之k-近邻算法的实现
Nov 27 Python
Python使用xlrd读取Excel格式文件的方法
Mar 10 #Python
使用graphics.py实现2048小游戏
Mar 10 #Python
Python实现去除代码前行号的方法
Mar 10 #Python
Linux下使用python调用top命令获得CPU利用率
Mar 10 #Python
Python获取DLL和EXE文件版本号的方法
Mar 10 #Python
Python接收Gmail新邮件并发送到gtalk的方法
Mar 10 #Python
Python创建xml的方法
Mar 10 #Python
You might like
php strlen mb_strlen计算中英文混排字符串长度
2009/07/10 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
如何取得中文输入的真实长度?
2006/06/24 Javascript
DOM 脚本编程中的兄弟节点
2009/10/31 Javascript
HTML中的setCapture和releaseCapture使用介绍
2012/03/21 Javascript
15条JavaScript最佳实践小结
2013/08/09 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
CSS中position属性之fixed实现div居中
2015/12/14 Javascript
跨域资源共享 CORS 详解
2016/04/26 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
详解Javascript ES6中的箭头函数(Arrow Functions)
2016/08/24 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
浅谈Vue初学之props的驼峰命名
2018/07/19 Javascript
react配置antd按需加载的使用
2019/02/11 Javascript
JavaScript内置对象math,global功能与用法实例分析
2019/06/10 Javascript
js获取图片的base64编码并压缩
2020/12/05 Javascript
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
2021/01/29 Javascript
[02:17]2016国际邀请赛中国区预选赛VG战队领队采访
2016/06/26 DOTA
[06:43]2018DOTA2国际邀请赛寻真——VGJ.Thunder
2018/08/11 DOTA
Python开发WebService系列教程之REST,web.py,eurasia,Django
2014/06/30 Python
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
Python日期的加减等操作的示例
2017/08/15 Python
Python生成8位随机字符串的方法分析
2017/12/05 Python
python导入pandas具体步骤方法
2019/06/23 Python
python 判断字符串中是否含有汉字或非汉字的实例
2019/07/15 Python
Python无损压缩图片的示例代码
2020/08/06 Python
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
一些关于MySql加速和优化的面试题
2014/01/30 面试题
个人简历自我鉴定
2013/10/11 职场文书
淘宝中秋节活动方案
2014/01/31 职场文书
放弃继承权公证书
2015/01/23 职场文书
大学军训心得体会800字
2016/01/11 职场文书
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL
云服务器部署 Web 项目的实现步骤
2022/06/28 Servers