concurrent.futures
库在Python中提供了一个高层次的接口,用于异步执行可调用对象。这个库非常适合执行多线程或多进程任务,因为它会自动管理线程或进程的创建、调度和回收。
以下是一个使用concurrent.futures.ThreadPoolExecutor
来完成多线程任务的示例。假设我们有一个函数task
,它接受一个整数参数,并返回一个该整数的平方。我们将使用线程池来并行执行多个这样的任务。
import concurrent.futures
# 定义任务函数
def task(n):
"""计算整数的平方并模拟一些工作"""
print(f"开始计算 {n} 的平方,在线程 {concurrent.futures.thread_identifier()}")
# 模拟一些计算工作
import time
time.sleep(1) # 假设每个任务耗时1秒
result = n * n
print(f"完成计算 {n} 的平方,结果为 {result}")
return result
# 主程序
if __name__ == "__main__":
# 创建一个包含4个线程的线程池
with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor:
# 提交10个任务到线程池
futures = [executor.submit(task, i) for i in range(10)]
# 等待所有任务完成并获取结果
for future in concurrent.futures.as_completed(futures):
result = future.result()
print(f"