``
python,from concurrent.futures import ThreadPoolExecutor,import time,,def task(n):, print(f"执行任务{n}"), time.sleep(1), print(f"完成任务{n}"),,with ThreadPoolExecutor(max_workers=3) as executor:, for i in range(5):, executor.submit(task, i),``
import concurrent.futures
import time
def task(n):
print(f"开始执行任务 {n}")
time.sleep(2)
print(f"任务 {n} 完成")
return n * 2
创建一个线程池,最大并发数为5
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
# 提交任务到线程池
futures = [executor.submit(task, i) for i in range(10)]
# 获取任务结果
results = [future.result() for future in concurrent.futures.as_completed(futures)]
print("所有任务已完成,结果如下:")
print(results)
问题与解答

(图片来源网络,侵删)
1、问题: 如何调整线程池的大小?
解答: 在创建ThreadPoolExecutor时,可以通过修改max_workers参数来调整线程池的大小,将max_workers设置为10意味着线程池最多可以同时运行10个线程。
2、问题: 如何处理线程池中的任务异常?
解答: 当使用executor.submit()提交任务时,它会返回一个Future对象,可以使用Future对象的exception()方法来检查任务是否引发了异常,如果任务抛出了异常,exception()方法会返回该异常;否则,它将返回None,还可以使用Future对象的add_done_callback()方法来添加回调函数,以便在任务完成或引发异常时执行特定的操作。

(图片来源网络,侵删)