如何使用Python实现一个高效的线程池?

``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)

问题与解答

如何使用Python实现一个高效的线程池?
(图片来源网络,侵删)

1、问题: 如何调整线程池的大小?

解答: 在创建ThreadPoolExecutor时,可以通过修改max_workers参数来调整线程池的大小,将max_workers设置为10意味着线程池最多可以同时运行10个线程。

2、问题: 如何处理线程池中的任务异常?

解答: 当使用executor.submit()提交任务时,它会返回一个Future对象,可以使用Future对象的exception()方法来检查任务是否引发了异常,如果任务抛出了异常,exception()方法会返回该异常;否则,它将返回None,还可以使用Future对象的add_done_callback()方法来添加回调函数,以便在任务完成或引发异常时执行特定的操作。

如何使用Python实现一个高效的线程池?
(图片来源网络,侵删)