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将人民币转换大写的脚本代码
Feb 10 Python
Python greenlet实现原理和使用示例
Sep 24 Python
Python基于tkinter模块实现的改名小工具示例
Jul 27 Python
利用python获取当前日期前后N天或N月日期的方法示例
Jul 30 Python
Python之csv文件从MySQL数据库导入导出的方法
Jun 21 Python
Django中使用第三方登录的示例代码
Aug 20 Python
python 运用Django 开发后台接口的实例
Dec 11 Python
学习和使用python的13个理由
Jul 30 Python
Python Django form 组件动态从数据库取choices数据实例
May 19 Python
python如何查看安装了的模块
Jun 23 Python
Python 无限级分类树状结构生成算法的实现
Jan 21 Python
python字符串常规操作大全
May 02 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安装攻略:常见问题解答(三)
2006/10/09 PHP
FCKeditor的安装(PHP)
2007/01/13 PHP
php上传文件的增强函数
2010/07/21 PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
2012/06/07 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
原生js实现半透明遮罩层效果具体代码
2013/06/06 Javascript
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
原生js和jQuery写的网页选项卡特效对比
2015/04/27 Javascript
jquery实现LED广告牌旋转系统图片切换效果代码分享
2015/08/26 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
jquery点击改变class并toggle的实现代码
2016/05/15 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
Javascript的比较汇总
2016/07/25 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
基于pako.js实现gzip的压缩和解压功能示例
2017/06/13 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
vue-ajax小封装实例
2017/09/18 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
2018/12/24 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
2020/03/03 Javascript
Python随手笔记之标准类型内建函数
2015/12/02 Python
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
HTML5本地存储之Web Storage应用介绍
2013/01/06 HTML / CSS
Lookfantastic挪威官网:英国知名美妆购物网站
2017/07/26 全球购物
DC Shoes荷兰官方网站:美国极限运动品牌
2019/10/22 全球购物
大学生职业生涯规划书模版
2013/12/30 职场文书
护士长竞聘演讲稿
2014/04/30 职场文书
MySQL 时间类型的选择
2021/06/05 MySQL
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS
用JS写一个发布订阅模式
2021/11/07 Javascript
使用Cargo工具高效创建Rust项目
2022/08/14 Javascript