使用python多線程進行簡單的性能測試
阿新 • • 發佈:2018-09-25
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 11ms = "%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_code21 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多線程進行簡單的性能測試