python線程池


一、廢棄的第三方線程池庫 :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()

運行結果:

服務端:

 

 客戶端:

 


免責聲明!

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



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