Python ThreadPoolExecutor 实例方法

作者:编程家 分类: python 时间:2025-11-08

使用 Python 的 ThreadPoolExecutor 类可以实现多线程编程,使得任务的执行可以并发进行,提高程序的运行效率。ThreadPoolExecutor 类提供了一些实例方法,可以方便地管理线程池的运行状态、提交任务、获取任务的执行结果等。本文将介绍 ThreadPoolExecutor 类的几个实例方法,并提供相应的示例代码。

ThreadPoolExecutor 类的实例方法

ThreadPoolExecutor 类是 concurrent.futures 模块中的一个类,用于创建和管理线程池。它提供了以下几个常用的实例方法:

1. submit(fn, *args, **kwargs):提交一个可调用的任务到线程池中,并返回一个 Future 对象,表示任务的执行结果。

2. map(fn, *iterables, timeout=None):将可调用的任务应用于一个或多个可迭代对象的元素上,并返回一个迭代器,按照任务的顺序返回结果。

3. shutdown(wait=True):关闭线程池,不再接受新的任务。如果 wait 参数为 True(默认值),则等待所有任务执行完成后再关闭线程池;如果 wait 参数为 False,则立即关闭线程池,未执行的任务将被取消。

4. result(timeout=None):获取 Future 对象对应任务的执行结果。如果任务还未完成,可以设置 timeout 参数指定等待的时间,超时后将抛出 TimeoutError 异常。

使用 ThreadPoolExecutor 的案例代码

下面是一个使用 ThreadPoolExecutor 类的简单示例代码,展示了如何提交任务、获取任务的执行结果:

python

import concurrent.futures

def calculate_square(n):

return n ** 2

def main():

# 创建一个 ThreadPoolExecutor 对象,指定线程池的大小为 2

with concurrent.futures.ThreadPoolExecutor(max_workers=2) as executor:

# 提交任务到线程池中,并返回一个 Future 对象

future1 = executor.submit(calculate_square, 5)

future2 = executor.submit(calculate_square, 10)

# 获取任务的执行结果

result1 = future1.result()

result2 = future2.result()

print(f"5的平方是:{result1}")

print(f"10的平方是:{result2}")

if __name__ == "__main__":

main()

在上面的示例代码中,首先定义了一个计算平方的函数 calculate_square,然后在 main 函数中创建了一个 ThreadPoolExecutor 对象,指定线程池的大小为 2。接下来,通过 executor.submit 方法提交了两个任务到线程池中,分别计算 5 的平方和 10 的平方。然后,通过 future1.result 和 future2.result 方法获取了任务的执行结果,并打印输出。

使用 ThreadPoolExecutor 类可以方便地实现多线程编程,提高程序的运行效率。通过提交任务到线程池中,并使用 Future 对象获取任务的执行结果,可以更加灵活地管理线程池的运行状态。在实际开发中,可以根据具体的需求选择合适的线程池大小,并利用 ThreadPoolExecutor 类的实例方法来完成任务的调度和管理。