python中进程池 Pool 的 map 方法 = 一次提交多个任务,自动分配给进程执行
·
进程池 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 的关键特点
- 一次传入多个任务:参数是可迭代对象(列表、元组)
- 阻塞等待:所有进程执行完才继续往下走
- 返回顺序 = 参数顺序:和哪个进程先跑完无关
- 函数只能有 一个参数要传多个参数需要用
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(函数, 参数列表)→ 一次提交多个任务,自动分配进程,按顺序返回结果
更多推荐

所有评论(0)