当前位置:   article > 正文

multiprocessing.Pool 进程池_multiprocessing.pool.applyresult

multiprocessing.pool.applyresult

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

进程池有几个函数
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

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/860750?site=
推荐阅读
相关标签
  

闽ICP备14008679号