python 的執行緒池使用的是一種生產者消費者的模型
from concurrent.futures import ThreadPoolExecutor
from loguru import logger
import requests
import time
pool = ThreadPoolExecutor(max_workers=10)
def func_get():
response = requests.get('http://127.0.0.1:5002')
time.sleep(10)
def func_callback():
pass
for i in range(100):
feature = pool.submit(func_get)
feature.add_done_callback(func_callback)
在其他執行緒中呼叫 pool 的 queue 的 submit 介面的時候,task 會被提交給 pool 中的 queue
work thread 會從 queue 中去任務做,如果佇列為空,則阻塞掛起
from concurrent.futures import ThreadPoolExecutor
pool = ThreadPoolExecutor(max_workers=10)
pool._work_queue.qsize()
可以使用 _work_queue
訪問到這個內部佇列