一、廢棄的第三方線程池庫 :threadpool
threadpool已經不建議使用了,官方文檔推薦我們使用標准庫中的 multiprocessing 或者 asyncio.A 來替代
官網地址:https://pypi.org/project/threadpool/
二、python 3.2之后,標准昆中為我們提供了,ThreadPoolExecutor線程池
案例如下,通過線程池來發送服務端請求
服務端:
# coding: utf-8 from flask import Flask import time import random app = Flask(__name__) reqCount = 0 @app.route("/") def hello_world(): global reqCount reqCount = reqCount + 1 curCount = reqCount randTime = random.randint(0,3) time.sleep(randTime) print(reqCount,randTime) return "this is the " + str(curCount) + " request" if __name__ == "__main__": app.run(host="0.0.0.0",port=8000,debug=True)
客戶端:
# coding: utf-8 import requests import time from concurrent.futures import ThreadPoolExecutor def reqlocal(): r = requests.get('http://localhost:8000') rTxt = r.text print(rTxt) def threadPoolTest(): startTime = int(time.time()) loopCnt = 30 with ThreadPoolExecutor(max_workers=10) as t: for i in range(loopCnt): task = t.submit(reqlocal) task.done() entdTime = int(time.time()) proTime = entdTime - startTime print("總耗時:",proTime) if __name__ == "__main__": threadPoolTest()
運行結果:
服務端:
客戶端: