封面图片来源:沙沙野
内容概览
- 进程池
- 进程池和多进程的性能测试
- 进程池的其他机制
- 进程池的回调函数
进程池
- 如果有多少个任务,就开启多少个进程,实际上并不划算。由于计算机的 cpu 个数是非常有限的因此开启的进程数量完全和 cpu 个数成比例
- 进程池的特点:同一时间最多有多少个进程能够同时执行任务与进程池中进程的个数有关系
- 如果进程池设置了个数,那么程序只会开启四个进程运行
from multiprocessing import Pool
import os
def func(i):
print(i, os.getpid())
if __name__ == "__main__":
p = Pool(4)
for i in range(10):
# async 异步的提交任务
p.apply_async(func, args=(i,))
# 关闭池子,不是回收池子中的进程,而是阻止继续提交任务
p.close()
# 阻塞,直到池子中的任务都执行完毕
p.join()
# 运行结果:发现即使重新运行多次,最多也就出现四个进程
0 4866
1 486