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
访问到这个内部队列