multiprocessing.Pool 进程池

进程池就是维持一定量的进程,当有任务时调用进程处理,没有任务时进程空闲,当任务过多时就会等有空闲进程后再进行处理。

进程池有几个函数
apply() 执行一个任务,会阻塞当前进程

apply_async() 执行一个任务,不会阻塞当前进程

apply会返回执行函数的结果,但是apply_async不会等待结果而是直接返回一个multiprocessing.pool.ApplyResult object,因为apply阻塞了进程,等子进程运行完后才继续,所以可以拿到结果,而apply_async不阻塞当前进程,直接输出结果就会输出一个multiprocessing.pool.ApplyResult object
例如:
apply
在这里插入图片描述
apply_async
在这里插入图片描述

map() 并行地执行一个map,会阻塞当前进程
map_async() 并行地执行一个map,不会阻塞当前进程

map和python内置的map差不多,但是这里是并行执行(会占用所有空闲进程去实现函数)。
map
在这里插入图片描述
map_async
在这里插入图片描述

close() 关闭进程池,不接受新任务,当所有进程的任务都完成后关闭
terminate() 无论任务是否完成,立刻关闭
join() 等待进程池中进程完成,会阻塞当前进程

进程池中共享对象,之前提到进程之间用队列实现共享可以用到multiprocessing.Queue,但是进程池中进程共享队列必须是multiprocessing.Manager.Queue

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值