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全局变量操作详解
Apr 14 Python
python开发之文件操作用法实例
Nov 13 Python
老生常谈python函数参数的区别(必看篇)
May 29 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
Jul 02 Python
Python 字符串转换为整形和浮点类型的方法
Jul 17 Python
Python获取网段内ping通IP的方法
Jan 31 Python
简单了解python的break、continue、pass
Jul 08 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
Aug 06 Python
详解使用Python下载文件的几种方法
Oct 13 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
Oct 25 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
Apr 24 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
Jun 08 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框架Phpbean说明
2008/01/10 PHP
YII Framework框架教程之缓存用法详解
2016/03/14 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
页面回到顶部的三种实现(锚标记,js)
2012/10/01 Javascript
JSON传递bool类型数据的处理方式介绍
2013/09/18 Javascript
小结Node.js中非阻塞IO和事件循环
2014/09/18 Javascript
js实现点击文本框显示日期选择器特效代码分享
2020/05/21 Javascript
JS实现适合于后台使用的动画折叠菜单效果
2015/09/21 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
javascript中的 object 和 function小结
2016/08/14 Javascript
angularjs实现下拉列表的选中事件示例
2017/03/03 Javascript
vue数字类型过滤器的示例代码
2017/09/07 Javascript
通过button将form表单的数据提交到action层的实例
2017/09/08 Javascript
vue.js中引入vuex储存接口数据及调用的详细流程
2017/12/14 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
jQuery判断自定义属性data-val用法示例
2019/01/07 jQuery
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
layui 动态设置checbox 选中状态的例子
2019/09/02 Javascript
javascript 内存模型实例详解
2020/04/18 Javascript
webpack+vue-cil 中proxyTable配置接口地址代理操作
2020/07/18 Javascript
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
2017/12/15 Python
python爬虫之模拟登陆csdn的实例代码
2018/05/18 Python
python生成ppt的方法
2018/06/07 Python
python中copy()与deepcopy()的区别小结
2018/08/03 Python
10招!看骨灰级Pythoner玩转Python的方法
2019/04/15 Python
利用python计算windows全盘文件md5值的脚本
2019/07/27 Python
Windows 下python3.8环境安装教程图文详解
2020/03/11 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
HTML5中新标签和常用标签详解
2014/03/07 HTML / CSS
Java中的类包括什么内容?设计时要注意哪些方面
2012/05/23 面试题
Java程序员综合测试题
2014/04/25 面试题
党校培训思想汇报
2013/12/30 职场文书
25岁生日感言
2014/01/13 职场文书
Nginx虚拟主机的搭建的实现步骤
2022/01/18 Servers
叶县这家生产军用电台的兵工厂,人称“四机部”,走出一上将
2022/02/18 无线电
MySQL 执行数据库更新update操作的时候数据库卡死了
2022/05/02 MySQL