国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

python 寫一個性能測試工具(一)

瀏覽:31日期:2022-07-07 11:14:08

國慶重新學習了一下go的gin高性能測試框架。

用JMeter來測試gin與flask接口的性能,差別很大。

為什么我自己不嘗試寫一個性能工具,性能工具的核心就是 并發 和 請求。

請求可以選擇Python的requests庫。

并發可以通過python的 進程、線程、協程模擬。

這么一想,也不是很難了,上手擼一個。

依賴庫

requests==2.22.0gevent==20.9.0numpy==1.19.2

requests 大家并不陌生,HTTP請求庫。

gevent是python協程庫,通過協程模擬并發更節省資源,在同樣配置下能模擬更多的并發。

numpy 是python的數據計算庫,提供大量組數和矩陣運算,這里用它求列表的平均值。

實現腳本

好了,接下來開始上手寫代碼了。

from __future__ import print_functionimport timeimport geventfrom gevent import monkeymonkey.patch_all()import requestsfrom numpy import meanusers = 10 # 用戶數numbers = 100 # 請求次數req_url = 'http://127.0.0.1:8080/user/tom' # 請求URLprint('請求URL: {url}'.format(url=req_url))print('用戶數:{},循環次數: {}'.format(users, numbers))print('============== Running ===================')pass_number = 0fail_number = 0run_time_list = []def running(url): global fail_number global pass_number for _ in range(numbers): start_time = time.time() r = requests.get(url) if r.status_code == 200: pass_number = pass_number + 1 print('.', end='') else: fail_number = fail_number + 1 print('F', end='') end_time = time.time() run_time = round(end_time - start_time, 4) run_time_list.append(run_time)jobs = [gevent.spawn(running, req_url) for _url in range(users)]gevent.wait(jobs)print('n============== Results ===================')print('最大: {} s'.format(str(max(run_time_list))))print('最小: {} s'.format(str(min(run_time_list))))print('平均: {} s'.format(str(round(mean(run_time_list), 4))))print('請求成功', pass_number)print('請求失敗', fail_number)print('============== end ===================')

設計思路

在JMeter中創建線程組有兩個參數 線程數和 循環數,即 用戶數 和請求數,設置多少個用戶,每個用戶用戶跑多少次,用戶數通過協程模擬,每次用戶運行次數通過for循環實現。

至于請求就比較簡單了,直接通過requests發送請求。通過判斷影響的狀態碼是否為200來判斷是否成功,通過分別計算成功和失敗的請求個數。

關于請求時間統計,在每次請求前后獲得當前時間戳,然后計算時間差就是單個接口的調用時間。最大,最小,平均通過計算就可輕松的得到。

> python3 ab.py請求URL: http://127.0.0.1:8080/user/tom用戶數:10,循環次數: 100============== Running ===================........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................============== Results ===================最大: 0.0352 s最小: 0.0036 s平均: 0.0204 s請求成功 1000請求失敗 0============== end ===================

后續

把ab.py腳本做成 ab 命令行工具。

支持更多的請求類型(get/post/put/delete)和參數。

更多統計維度,吞吐量、吞吐率

增加啟動時間,思考時間等

...

以上就是python 寫一個性能測試工具(一)的詳細內容,更多關于python 性能測試工具的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 久草欧美视频 | 亚洲在线观看视频 | 日韩欧美视频在线播放 | 久久影院yy6080 | 国产高清美女一级a毛片久久w | 一级一片| 日韩18在线观看 | 成人免费观看国产高清 | 在线aaa | 在线观看免费视频国产 | 中文精品久久久久国产网址 | 国产成人免费片在线观看 | yy6080久久亚洲精品 | 九九久久国产 | 免费人成黄页在线观看视频国产 | 亚洲欧美日韩中文字幕在线 | 国产三及 | 精品国产一区二区三区久久影院 | 91精品日本久久久久久牛牛 | 亚洲欧美成人网 | 中文字幕亚洲视频 | 国产黄色大片网站 | 日韩欧美在线一级一中文字暮 | 国产91av在线 | 国产精品美女一区二区三区 | 91视频久久久久 | 91视频国内| 久久综合一本 | 国产午夜精品不卡视频 | 国产成人精品免费视频大全可播放的 | 思99re久久这里只有精品首页 | 一级毛片视频播放 | 国产91av在线 | 久久久视频在线 | 波多野结衣在线播放 | 久久精品国产精品亚洲精品 | 欧美日韩在线播一区二区三区 | 毛片免费全部免费播放 | 成人a毛片久久免费播放 | 国产三级中文字幕 | 国产a级三级三级三级中国 国产a级特黄的片子视频 |