import random import time from concurrent.futures import ThreadPoolExecutor from concurrent.futures import as_completed
deffoo(i): # do something time.sleep(random.randint(1, 5)) return i
# max_workers 指定线程池大小,如果不指定默认是 cpu *5 p = ThreadPoolExecutor(max_workers=4)
# 提交任务 tasks = [p.submit(foo, i) for i in range(10)]
# 获取返回结果, 这里的返回并不是按照提交顺序来的,而是谁先完成,谁先返回 for future in as_completed(tasks): print(future.result()) # 如果希望有序返回,使用 map # 这里 result 是生成器,可以使用 list(result) 转换为 list 类型 result = p.map(foo, range(10))