在性能測试中。我们常常须要画出CPU memory 或者IO的趋势图。

预计大学里。大多数人都学习过matlib, 领略了matlib绘图的强大。

python提供了强大的绘图模块matplotlib,全然依照matlib的库来的。移步到官方站点看看http://matplotlib.org/。

绘制性能測试中CPU, memory, IO的趋势图,不须要非常多复杂的功能,就是个2D图。 直接看代码吧。直接!

须要的读者。能够直接下载这个代码用就好了。兼容了CPU/Memory/IO,  或者多个进程的情况,文件名称为draw_trend.py, 使用方法。draw_trend.py data_file cpu/mem/io, 读者须要做的仅仅是把监控的数据按代码后面的格式处理出来。

#!/usr/bin/env python
#coding=utf-8 import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
import datetime as dt
from matplotlib.font_manager import FontProperties
import sys def draw_trend(data_file,object_type):
fontP = FontProperties()
fontP.set_size('small')
data=open(data_file,"r")
lines=data.readlines()
data.close()
lable_list=lines[0].split(None)
#data={"lable_name":[x,y1,y2],x:[1,2,4],y1:[2,4],y3:[4,5]}
lable_name=[]
data_list=[] for lable in lable_list:
lable_name.append(lable)
data_list.append([]) for line in lines[1:]:
line_list=line.strip().split(None)
#print line_list
#print data_list
for i in xrange(len(data_list)):
#print data_list
if i==0:
data_list[0].append(dt.datetime(int(line_list[0][0:4]), int(line_list[0][4:6]),
int(line_list[0][6:8]),int(line_list[0][9:11]),
int(line_list[0][12:14]),int(line_list[0][15:17])))
else:
if object_type=="mem":
data_list[i].append(float(line_list[i]))
else:
data_list[i].append(float(line_list[i]))
#print data_list
'''
dates = [dt.datetime.today() + dt.timedelta(days=i) for i in range(10)]
values = np.random.rand(len(dates))
'''
mpl_date2num=mpl.dates.date2num(data_list[0])
for y_value in data_list[1:]:
plt.plot_date(mpl_date2num, y_value,"-",label=lable_name[data_list.index(y_value)])
xAxis = plt.axes().xaxis
dateFmt = mpl.dates.DateFormatter('%H:%M')
#daysLoc = mpl.dates.DayLocator()
#minLoca=mpl.dates.MinuteLocator(interval=2)
#secLoc=mpl.dates.SecondLocator(interval=60)
xAxis.set_major_formatter(dateFmt)
#xAxis.set_major_locator(minLoca)
#xAxis.set_minor_locator(secLoc) #plt.legend(loc='upper right',bbox_to_anchor=(1.0, 1.07),prop = fontP,ncol=len(lable_name)-1)
#leg=plt.legend(loc='upper right',prop = fontP)
leg=plt.legend(loc='upper right',prop={'size':8})
leg.get_frame().set_alpha(0.5)
plt.tick_params(axis='both', labelsize=8)
plt.xlabel('Time')
if object_type=="mem":
plt.ylabel('Memory/unit M')
if object_type=="io":
plt.ylabel('IO Busy')
if object_type=="cpu":
plt.ylabel('CPU Usage Percent')
plt.savefig(data_file+".png") #plt.show()
try:
draw_trend(sys.argv[1],sys.argv[2])
except:
print "error command, right command should be:","python draw_matlab.py datafile mem/io/cpu"

上传个CPU 例子图。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcG93ZXJjY25h/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

数据要求的格式为。第一行为 X轴标题,和相应绘图对象。每一个对象空格隔开。看以下数据

time Process1 Process2 Process3 Process4 Process5

20120410-13:13:47 1 1 0 80 2

20120410-13:13:53 0 0 0 81 0

20120410-13:13:59 4 2 0 82 6

20120410-13:14:05 4 2 0 83 6

20120410-13:14:11 5 3 0 84 8

20120410-13:14:17 5 3 0 85 8

20120410-13:14:23 5 2 0 93 7

20120410-13:14:29 5 2 0 93 7

20120410-13:14:35 4 2 0 94 6

20120410-13:14:41 5 3 0 92 8

20120410-13:14:47 4 3 0 93 7

20120410-13:14:53 4 2 0 94 6

20120410-13:14:59 4 2 0 94 6

20120410-13:15:05 3 2 0 95 5

20120410-13:15:11 4 2 0 94 6

20120410-13:15:17 4 2 0 94 6

20120410-13:15:23 4 1 0 95 5

20120410-13:15:29 5 1 0 94 6

用python做自己主动化測试--绘制系统性能趋势图和科学计算的更多相关文章

  1. 用python做自己主动化測试--对server端的自己主动化測试(3)-很多其它http client实例

    上一篇中仅仅是实现了一个非常easy的http client功能,request还提供了keep alive, SSL, 多文件上传,cookie 管理功能,http requests头管理等丰富的功 ...

  2. iOS自己主动化測试的那些干货

    前言 假设有測试大佬发现内容不正确.欢迎指正,我会及时改动. 大多数的iOS App(没有持续集成)迭代流程是这种 也就是说.測试是公布之前的最后一道关卡.假设bug不能在測试中发现,那么bug 就会 ...

  3. Android 自己主动化測试(3)<monkeyrunner> 依据ID查找对象&touch&type (python)

    我在之前的两篇文章中用java来实现过 Android 自己主动化測试(1)怎样安装和卸载一个应用(java).Android 自己主动化測试(2)依据ID查找对象(java). 可是本质上都是用mo ...

  4. Selenium2 Python 自己主动化測试实战学习笔记(五)

    7.1 自己主动化測试用例 无论是功能測试.性能測试和自己主动化測试时都须要编写測试用例,測试用例的好坏能准确的体现了測试人员的经验.能力以及对项目的深度理解. 7.1.1 手工測试用例与自己主动化測 ...

  5. Android自己主动化測试解决方式

    如今,已经有大量的Android自己主动化測试架构或工具可供我们使用,当中包含:Activity Instrumentation, MonkeyRunner, Robotium, 以及Robolect ...

  6. Android自己主动化測试之Monkeyrunner用法及实例

    眼下android SDK里自带的现成的測试工具有monkey 和 monkeyrunner两个.大家别看这俩兄弟名字相像,但事实上是完全然全不同的两个工具,应用在不同的測试领域.总的来说,monke ...

  7. 带有机器人框架的.NET自己主动化測试

    Clayton Neal在软件測试和质量保证方面有超过13年的经验,当中有八年的Windows, web,和移动应用程序的測试自己主动化经验.他在測试领域的全部等级都工作过.近期他在Bloomberg ...

  8. Appium IOS 自己主动化測试初探

    手机平台的自己主动化測试工具非常多,之前研究过了安卓和苹果的原生自己主动化測试框架.经一些同事介绍,貌似Appium是个不错的工具. 想记录一下研究的结果,也算是篇干货的文章 在网上也看了一些视频.个 ...

  9. Android Monkey自己主动化測试

    前言 假设你做Android开发,还没有使用过Monkey进行測试,那么今天看到这篇文章,希望能解决你Android測试中的一些问题.起码能帮你省点測试的时间而且发现很多其它的问题. Monkey简单 ...

随机推荐

  1. MFC 实现打印机打印功能

    Visual C++6.0是开发Windows应用程序的强大工具,但是要通过它实现程序的打印功能,一直是初学者的一个难点,经常有朋友询问如何在VC中实现打印功能,他们往往感到在MFC提供的框架内实现这 ...

  2. Git 的使用教程

    Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理. 安装Git 1.方法一:安装homebrew,然后通过homebrew安装Git. 第一步:在终端输入如下命令 ...

  3. Centos 查看内存

    1. 查看内存使用 free -mh 2. 读出的内核信息进行解释 cat /proc/meminfo MemTotal: kB #所有可用RAM大小 (即物理内存减去一些预留位和内核的二进制代码大小 ...

  4. ros move_base costmap 理解和实现动态窗口法避障

    以下大部分内容参考自 ros_by_example_hydro_volume_1.pdf local costmap 是怎么生成的?跟三维点云有什么关系? global costmap在没有全局地图下 ...

  5. Vue.js 2使用中的难点举例--子组件,slot, 动态组件,事件监听

    一例打尽..:) <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...

  6. [BZOJ1072][SCOI2007]排列perm 状压dp

    1072: [SCOI2007]排列perm Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2488  Solved: 1546[Submit][St ...

  7. POJ1226 Substrings(二分+后缀数组)

    题意:给n个字符串,求最长的子串,满足它或它的逆置出现在所有的n个字符串中. 把n个字符串及其它们的逆置拼接,中间用不同字符隔开,并记录suffix(i)是属于哪个字符串的: 跑后缀数组计算heigh ...

  8. 如何在AutoCAD中将卫星底图变为有坐标参考信息的

    这篇博文首先没有图,主要是博主太懒了,不想再截图,我把过程说清楚也可以的.特此说明. (1)将下载好的瓦片拼接好大的地图 (2)将其导入到ArcGIS中,定义其地理坐标,如WGS84:然后将其其投影为 ...

  9. Android并发编程

    Android的并发编程,即多线程开发,而Android的多线程开发模型也是源于Java中的多线程模型.所以本篇也会先讲一些Java中的多线程理念,再讲解具体涉及的类,最后深入Android中的并发场 ...

  10. Android 高版本API方法在低版本系统上的兼容性处理

    Android 版本更替,新的版本带来新的特性,新的方法. 新的方法带来许多便利,但无法在低版本系统上运行,如果兼容性处理不恰当,APP在低版本系统上,运行时将会crash. 本文以一个具体的例子说明 ...