1. 程式人生 > >使用python多線程進行簡單的性能測試

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

join 格式化 int info stat quest exc start append

步驟:

*定義請求函數

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

參考代碼:

 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()

執行結果為

技術分享圖片

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

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

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

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

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