最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年10月24日 10:59:07   作者:蟲師  
這篇文章主要介紹了利用python 寫一個性能測試工具,幫助大家更好的理解和使用python,感興趣的朋友可以了解下

國慶重新學(xué)習(xí)了一下go的gin高性能測試框架。

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

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

請求可以選擇Python的requests庫。

并發(fā)可以通過python的 進(jìn)程、線程、協(xié)程模擬。

這么一想,也不是很難了,上手?jǐn)]一個。

依賴庫

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

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

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

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

實現(xiàn)腳本

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

from __future__ import print_function
import time
import gevent
from gevent import monkey
monkey.patch_all()

import requests
from numpy import mean


users = 10 # 用戶數(shù)
numbers = 100 # 請求次數(shù)
req_url = "http://127.0.0.1:8080/user/tom" # 請求URL

print("請求URL: {url}".format(url=req_url))

print("用戶數(shù):{},循環(huán)次數(shù): {}".format(users, numbers))

print("============== Running ===================")

pass_number = 0
fail_number = 0

run_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 ===================")

設(shè)計思路

在JMeter中創(chuàng)建線程組有兩個參數(shù) 線程數(shù)和 循環(huán)數(shù),即 用戶數(shù) 和請求數(shù),設(shè)置多少個用戶,每個用戶用戶跑多少次,用戶數(shù)通過協(xié)程模擬,每次用戶運行次數(shù)通過for循環(huán)實現(xiàn)。

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

關(guān)于請求時間統(tǒng)計,在每次請求前后獲得當(dāng)前時間戳,然后計算時間差就是單個接口的調(diào)用時間。最大,最小,平均通過計算就可輕松的得到。

> python3 ab.py

請求URL: http://127.0.0.1:8080/user/tom
用戶數(shù):10,循環(huán)次數(shù): 100
============== Running ===================
...............................................................................................................
...............................................................................................................
...............................................................................................................
...............................................................................................................
...............................................................................................................
...............................................................................................................
...............................................................................................................
...............................................................................................................
...............................................................................................................
.
============== Results ===================
最大:    0.0352 s
最小:    0.0036 s
平均:    0.0204 s
請求成功 1000
請求失敗 0
============== end ===================

后續(xù)

把a(bǔ)b.py腳本做成 ab 命令行工具。

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

更多統(tǒng)計維度,吞吐量、吞吐率

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

...

以上就是python 寫一個性能測試工具(一)的詳細(xì)內(nèi)容,更多關(guān)于python 性能測試工具的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python實現(xiàn)多行注釋的另類方法

    Python實現(xiàn)多行注釋的另類方法

    這篇文章主要介紹了Python實現(xiàn)多行注釋的另類方法,本文使用的是Python多行文本功能來另類的實現(xiàn)Python的多行注釋,需要的朋友可以參考下
    2014-08-08
  • Python中類似于jquery的pyquery庫用法分析

    Python中類似于jquery的pyquery庫用法分析

    這篇文章主要介紹了Python中類似于jquery的pyquery庫用法,結(jié)合實例形式分析了pyquery庫的概念、原理、使用方法及操作技巧,需要的朋友可以參考下
    2019-12-12
  • Python Socket庫基礎(chǔ)方法與應(yīng)用詳解

    Python Socket庫基礎(chǔ)方法與應(yīng)用詳解

    這篇文章主要介紹了關(guān)于Python socket庫的詳細(xì)技術(shù)解析,包含基礎(chǔ)方法說明、工作原理剖析,以及多個應(yīng)用領(lǐng)域的完整實現(xiàn)代碼,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2025-04-04
  • Python正則表達(dá)式高效處理文本數(shù)據(jù)的秘訣輕松掌握

    Python正則表達(dá)式高效處理文本數(shù)據(jù)的秘訣輕松掌握

    當(dāng)談到文本處理和搜索時,正則表達(dá)式是Python中一個強(qiáng)大且不可或缺的工具,正則表達(dá)式是一種用于搜索、匹配和處理文本的模式描述語言,可以在大量文本數(shù)據(jù)中快速而靈活地查找、識別和提取所需的信息,
    2023-11-11
  • python模塊導(dǎo)入方式淺析步驟

    python模塊導(dǎo)入方式淺析步驟

    這篇文章主要為大家介紹了python中模塊導(dǎo)入的方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Python數(shù)據(jù)可視化 pyecharts實現(xiàn)各種統(tǒng)計圖表過程詳解

    Python數(shù)據(jù)可視化 pyecharts實現(xiàn)各種統(tǒng)計圖表過程詳解

    這篇文章主要介紹了Python數(shù)據(jù)可視化 pyecharts實現(xiàn)各種統(tǒng)計圖表過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • 利用Python和C語言分別實現(xiàn)哈夫曼編碼

    利用Python和C語言分別實現(xiàn)哈夫曼編碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Python和C語言分別實現(xiàn)哈夫曼編碼,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-07-07
  • python實現(xiàn)引用其他路徑包里面的模塊

    python實現(xiàn)引用其他路徑包里面的模塊

    這篇文章主要介紹了python實現(xiàn)引用其他路徑包里面的模塊,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 使用Python實現(xiàn)密碼與驗證碼的MD5加密

    使用Python實現(xiàn)密碼與驗證碼的MD5加密

    在現(xiàn)代軟件開發(fā)中,數(shù)據(jù)加密是一個非常重要的環(huán)節(jié),無論是用戶密碼、驗證碼,還是其他敏感信息,加密都是保護(hù)數(shù)據(jù)安全的關(guān)鍵手段之一,本文將通過一個具體的例子,詳細(xì)講解如何使用 Python 實現(xiàn)密碼與驗證碼的 MD5 加密
    2025-02-02
  • Python 如何查看程序內(nèi)存占用情況

    Python 如何查看程序內(nèi)存占用情況

    這篇文章主要介紹了Python 如何查看程序內(nèi)存占用情況,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評論

朝阳区| 鹤壁市| 南皮县| 遵义县| 丰顺县| 稻城县| 贵南县| 桓台县| 长沙市| 大名县| 桂平市| 沐川县| 绥化市| 务川| 瓮安县| 延边| 岚皋县| 霍城县| 吉安市| 景宁| 靖宇县| 泸州市| 正定县| 隆化县| 原阳县| 化隆| 都匀市| 巨鹿县| 北票市| 阳谷县| 铜梁县| 南投县| 常宁市| 页游| 平遥县| 湄潭县| 玉山县| 房产| 哈尔滨市| 闽清县| 翁源县|