使用python多線程進行簡單的性能測試


步驟:

*定義請求函數

*把請求函數添加進入多線

參考代碼:

 1 import threading
 2 import time
 3 import requests
 4 
 5 # 獲取毫秒級時間
 6 def get_time_ms():
 7     ct = time.time()    # 時間戳
 8     local_time = time.localtime(ct) # 本地化時間
 9     cart_time_strftime = time.strftime("%Y-%m-%d %H:%M:%S", local_time)  # 格式化時間
10     cart_time_strftime_ms = (ct - int(ct)) * 1000
11     ms = "%s.%03d" % (cart_time_strftime, cart_time_strftime_ms) # 拼接,獲取毫秒級時間
12     return ms
13 
14 # 定義請求函數
15 def trafficSearch():
16     session = requests.session()
17     url = "https://www.cnblogs.com/xuxiongbing/p/9475772.html"
18     try:
19         jmt_request = session.get(url)
20         status_code = jmt_request.status_code
21         return status_code
22     except Exception as e:
23             return str(e)
24 
25 threads = []
26 for jk in range(1,100):
27     s = threading.Thread(target=trafficSearch,args=())    # 把請求函數加入多線程中去
28     threads.append(s)
29 
30 
31 if __name__ == '__main__':
32     for t in threads:
33         t.setDaemon(True)           # 把多線程設置為守護線程
34         t.start()             # 開始執行多線程
35         print (('%s 執行時間為 %s') % (t,get_time_ms()))     # 輸出執行時間
36     t.join()       # 阻塞主線程執行
37     print("all over %s" % get_time_ms())
38     exit()

執行結果為

 

 

我這里只是請求,然后把請求加入了多線程,並沒有斷言。要斷言自己加把

這里,我有一個思考,參考請求結果,會發現大部分的線程請求響應都是在一秒內完成,但不是同毫秒內完成的。所以,我在想,性能測試是不是沒有真正意義上的並發,只能是狹義上的並發。

關於並發的定義,即同時執行,這個時應該指的是用戶能夠接受的時間或者客戶要求的時間,而不是一秒,我估計很多測試者都會有這個誤解,認為並發就是要在一秒內完成。

另外還有網絡上的延時,不可能有真正意義上的並發,只能是狹義上的並發。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM