在上一篇文章《用python實作高效能測試工具(一)》中我們透過換python的解析器來優化效能,但離實際需求還很遠。本文介紹的是自動化測試的最佳化程式碼。
方案2: 最佳化程式碼
工欲善其事,必先利其器。要最佳化程式碼,必須先找到程式碼的瓶頸所在,最土的方法是新增log, 或print, 偵錯完成還需要刪除,比較麻煩。 python裡面也提供了很多profile工具:profile, cProfile, hotshot, pystats, 但這些工具提供的結果可讀性不是很好,不夠直觀的一眼就能看到那個函數或者那一行佔用時間最多。 python line_profiler 提供了這樣的功能,可以直觀的看到哪一行佔用的時間最多,可謂“快準狠”,下載地址: http://pythonhosted.org/line_profiler/
安裝完line_proer
之後,在C:\Python27\Lib\site-packages 目錄下會有一個kernprof.py,在可能存在瓶頸的函數上添加@profile, 如以下例子:@profile def create_msg2(self,H,msg): li = msg.keys() msg_type=li[0] ULR_avps=[] ULR=HDRItem() ULR.cmd=self.dia.dictCOMMANDname2code(self.dia.MSG_TERM[msg_type]) if msg_type[-1]=='A': msg=msg[msg_type] self.dia.setAVPs_by_dic(msg_type,msg,ULR_avps) ULR.appId=H.appId ULR.EndToEnd=H.EndToEnd ULR.HopByHop=H.HopByHop msg=self.dia.createRes(ULR,ULR_avps) else: self.dia.setAVPs(msg_type,msg,ULR_avps) ULR.appId=self.dia.APPID self.dia.initializeHops(ULR) msg=self.dia.createReq(ULR,ULR_avps) return msg
【推薦課程:Python影片課程
】 ####以上是用python實作高效能測試工具(二)的詳細內容。更多資訊請關注PHP中文網其他相關文章!