进程池 Pool 的 map 方法 = 一次提交多个任务,自动分配给进程执行

核心用法

python

运行

from multiprocessing import Pool

def 任务函数(参数):
    # 做事情
    return 结果

if __name__ == '__main__':
    # 创建进程池,最多同时跑 4 个进程
    pool = Pool(4)
    
    # 一次提交多个任务:map(函数, 参数列表)
    结果列表 = pool.map(任务函数, 参数列表)
    
    pool.close()
    pool.join()

完整可运行示例

from multiprocessing import Pool

def func(x):
    print(f"进程处理: {x}")
    return x * x

if __name__ == '__main__':
    # 参数列表:一次性提交 [1,2,3,4,5] 五个任务
    args_list = [1, 2, 3, 4, 5]
    
    # 创建进程池,最多 3 个进程同时跑
    pool = Pool(3)
    
    # map 自动分配任务、阻塞等待全部完成
    result = pool.map(func, args_list)
    
    pool.close()
    pool.join()
    
    print("结果:", result)

输出(顺序不一定,但结果顺序和参数顺序一致):

已生成代码

plaintext

结果: [1, 4, 9, 16, 25]

map 的关键特点

  1. 一次传入多个任务:参数是可迭代对象(列表、元组)
  2. 阻塞等待:所有进程执行完才继续往下走
  3. 返回顺序 = 参数顺序:和哪个进程先跑完无关
  4. 函数只能有 一个参数要传多个参数需要用 starmap

传多个参数用 starmap

python

运行

def add(a, b):
    return a + b

if __name__ == '__main__':
    pool = Pool(2)
    # 参数是 [(a1,b1), (a2,b2)...]
    result = pool.starmap(add, [(1,2), (3,4), (5,6)])
    print(result)  # [3,7,11]

一句话总结

  • pool.map(函数, 参数列表)一次提交多个任务,自动分配进程,按顺序返回结果
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐