欢迎访问宙启技术站
智能推送

Python中的concurrent.futures.threadThreadPoolExecutor()实现任务并发执行

发布时间:2023-12-15 05:51:03

在Python中,concurrent.futures.threadThreadPoolExecutor是一个线程池执行器,它可以用来实现任务的并发执行。通过使用线程池,我们可以更方便地管理和控制线程的数量,以及处理异步任务。

下面是一个简单的例子,演示了如何使用concurrent.futures.threadThreadPoolExecutor来实现任务的并发执行:

import concurrent.futures
import time

# 定义一个简单的任务,用来模拟耗时操作
def task(name):
    print(f'Task {name} starting...')
    time.sleep(2)
    print(f'Task {name} finished!')

# 创建线程池执行器,最大线程数为3
executor = concurrent.futures.ThreadPoolExecutor(max_workers=3)

# 提交任务给线程池执行
tasks = ['A', 'B', 'C', 'D', 'E']
results = []

for task_name in tasks:
    future = executor.submit(task, task_name)
    results.append(future)

# 等待所有任务完成
concurrent.futures.wait(results)

# 关闭线程池
executor.shutdown()

在上面的例子中,我们首先定义了一个简单的任务函数task,该函数模拟了一个耗时操作(在这里是通过time.sleep来模拟)。然后,我们利用concurrent.futures.ThreadPoolExecutor创建了一个线程池执行器executor,最大线程数为3。

接下来,我们使用executor.submit方法来提交任务给线程池执行。这个方法会返回一个Future对象,我们可以用来追踪任务的状态和结果。我们将每个任务的Future对象保存在一个列表results中。

最后,我们使用concurrent.futures.wait方法来等待所有任务完成。这个方法会阻塞当前线程,直到所有任务都完成。在任务完成后,我们调用executor.shutdown方法来关闭线程池。

通过使用concurrent.futures.threadThreadPoolExecutor,我们可以方便地实现任务的并发执行,提高程序的运行效率。同时,线程池执行器还提供了一些其他的方法,如map、submit和shutdown等,用来进一步简化任务的提交和管理。