? ? ? ? ?在性能測試中。我們常常須要畫出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-8import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
import datetime as dt
from matplotlib.font_manager import FontProperties
import sysdef 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_listfor i in xrange(len(data_list)):#print data_listif 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().xaxisdateFmt = 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 例子圖。
數據要求的格式為。第一行為 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
轉載于:https://www.cnblogs.com/gcczhongduan/p/5316834.html
總結
以上是生活随笔為你收集整理的用python做自己主动化測试--绘制系统性能趋势图和科学计算的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。