You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中是否存在类似asyncio.gather()的多线程/多进程批量运行函数?

有,Python里有多种工具能实现类似asyncio.gather()的批量多线程/多进程执行效果

不需要手动逐个创建Thread或Process实例,以下是常用的方案:

多线程批量执行

使用标准库concurrent.futures.ThreadPoolExecutor,它提供了简洁的批量任务提交接口,和asyncio.gather()的使用逻辑类似。

基础批量执行(按输入顺序返回结果)

from concurrent.futures import ThreadPoolExecutor
import time

def worker_task(num):
    time.sleep(1)  # 模拟耗时操作
    return num * 2

# 用上下文管理器自动管理线程池资源
with ThreadPoolExecutor(max_workers=3) as executor:
    # 批量提交任务,按输入顺序返回结果
    results = list(executor.map(worker_task, [1, 2, 3, 4]))

print(results)  # 输出: [2, 4, 6, 8]

灵活控制(处理异常、按完成顺序获取结果)

如果需要处理任务异常,或者按任务完成顺序获取结果,可结合submit()和as_completed():

from concurrent.futures import ThreadPoolExecutor, as_completed

def worker_task(num):
    if num == 3:
        raise ValueError("模拟任务异常")
    time.sleep(1)
    return num * 2

with ThreadPoolExecutor(max_workers=3) as executor:
    # 批量提交任务,得到future对象列表
    future_list = [executor.submit(worker_task, i) for i in [1, 2, 3, 4]]
    results = []
    
    for future in as_completed(future_list):
        try:
            results.append(future.result())
        except Exception as e:
            results.append(f"任务失败: {str(e)}")

print(results)  # 输出顺序可能因执行速度变化,比如 [2, 4, 8, "任务失败: 模拟任务异常"]

多进程批量执行

和多线程逻辑一致,只需把ThreadPoolExecutor换成concurrent.futures.ProcessPoolExecutor即可,接口完全通用:

from concurrent.futures import ProcessPoolExecutor
import time

def worker_task(num):
    time.sleep(1)
    return num * 2

# 多进程必须在if __name__ == "__main__"块内执行,避免子进程重复初始化
if __name__ == "__main__":
    with ProcessPoolExecutor(max_workers=3) as executor:
        results = list(executor.map(worker_task, [1, 2, 3, 4]))
    
    print(results)  # 输出: [2, 4, 6, 8]

另外,标准库multiprocessing.Pool也提供了类似的map()/starmap()方法,适合更底层的多进程控制需求。

这些工具都能帮你像asyncio.gather()那样,简洁地批量管理多线程/多进程任务,无需手动处理线程/进程的创建、启动和回收。

内容的提问来源于stack exchange,提问作者Super Kai - Kazuya Ito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 03:25:29