并发执行工具 - ExecUtil

由来

批量任务并发执行是常见的性能优化手段。ExecUtil 基于 concurrent.futures 标准库,提供线程池和进程池的批量任务提交接口。

方法

线程池

适用于 I/O 密集型任务(网络请求、文件读写等):

from hutool import ExecUtil
import time

def fetch(url):
    time.sleep(0.1)  # 模拟 I/O
    return f"data from {url}"

urls = ["url1", "url2", "url3", "url4"]
results = ExecUtil.multi_thread_submit(fetch, urls, max_workers=4)
# results 包含所有结果(顺序可能不同)

进程池

适用于 CPU 密集型任务(数值计算、数据处理等):

def compute(n):
    return n ** 2

results = ExecUtil.multi_process_submit(compute, [1, 2, 3, 4, 5])
# [1, 4, 9, 16, 25]

备注

进程池要求 func 和参数必须可 pickle 序列化。对于 I/O 密集型任务,建议使用线程池。


备注

更多方法请参阅 API 参考 文档。