Python ThreadPoolExecutor 详解

Python ThreadPoolExecutor 详解

ThreadPoolExecutor 是 Python 标准库 concurrent.futures 模块提供的一个线程池实现,用于高效地执行可调用对象的异步执行。下面我将全面介绍它的使用方法和最佳实践。

基本概念

1. 核心特点

  • 线程池:预先创建一组线程,避免频繁创建销毁线程的开销
  • 任务队列:当所有线程都忙时,新任务进入队列等待
  • Future对象:代表异步执行的操作和结果

2. 适用场景

  • I/O密集型任务(网络请求、文件读写等)
  • 需要并行执行但不需要真正并行的任务
  • 需要限制最大并发数的场景

基本用法

1. 简单示例

from concurrent.futures import ThreadPoolExecutor
import time

def task(name):
    print(f"任务 {
     name} 开始")
    time.sleep(2)
    print(f"任务 {
     name} 完成")
    return f"结果-{
     name}"

# 创建线程池(默认线程数为CPU核心数*5)
with ThreadPoolExecutor(max_workers=3) as executor:
    # 提交任务
    future1 = executor.submit(task, "A")
    future2 = executor.submit(task, "B")
    
    # 获取结果
    print(future1.result())  # 阻塞直到任务完成
    print(future2.result())

2. 使用 map 方法

def square(x):
    return x * x

with ThreadPoolExecutor() as executor:
    # 并行计算平方
    results = executor.map(square, [1, 2, 3, 4, 5])
    print(list(results))  # [1, 4, 9, 16, 25]

高级用法

1. 回调函数

def callback(future):
    try:
        result = future.result(

你可能感兴趣的:(python,开发语言)