什么是Python中的进程池

  介绍

本篇文章给大家分享的是有关什么是Python中的进程池,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

<强>进程池池

当需要创建的子进程数量不多时,可以直接利用多处理中过程的动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到多处理模块提供的池方法。

初始化池时,可以指定一个最大进程数,当有新的请求提交到池中时,如果池还没有满,那么就会创建一个新的进程用来执行该请求;但如果池中的进程数已经达到指定的最大值,那么该请求就会等待,直到池中有进程结束,才会创建新的进程来执行。

得到multiprocessing  import 池   import 操作系统   import 时间   import 随机   def 工人(味精):   ,,,t_start =, time.time ()   ,,,print (“% d进程开始执行% d" % (os.getpid()、味精))   ,,,# random.random()随机生成0 ~ 1之间的浮点数   ,,,time . sleep (random.random () * 2),   ,,,t_stop =, time.time ()   ,,,print(味精、“执行完毕,耗时% 0.2 f" % (t_stop-t_start))   if  __name__ ==, & # 39; __main__ # 39;:   ,,,阿宝=池(3),#定义一个进程池,最大进程数3   ,,,for 小姐:拷贝范围(0,10):   ,,,,,,,# Pool.apply_async(要调用的目标,(传递给目标的参数元祖,))   ,,,,,,,#每次循环将会用空闲出来的子进程去调用目标   ,,,,,,,po.apply_async(工人,(我))   ,,,print(“- - - - - - - - - -“开始)   ,,,po.close(), #关闭进程池,关闭后阿宝不再接收新的请求   ,,,po.join(), #等待订单中所有子进程执行完成,必须放在亲密语句之后   ,,,print(“——端——产生绯闻。)

运行结果为:

- - - - - - - - - -开始   4353年进程开始执行0   4354年进程开始执行1   4355年进程开始执行2   2,执行完毕,耗0.20时   4355年进程开始执行3   1、执行完毕,耗1.19时   4354年进程开始执行4   4、执行完毕,耗0.37时   4354年进程开始执行5   0,执行完毕,耗1.57时   4353年进程开始执行6   5,执行完毕,耗0.19时   4354年进程开始执行7   3,执行完毕,耗1.63时   4355年进程开始执行8   6,执行完毕,耗0.49时   4353年进程开始执行9   8日,执行完毕,耗0.75时   7,执行完毕,耗0.90时   9日,执行完毕,耗0.63时   ——端- - - - - -

<强>多处理。池常用函数解析:

apply_async (func (args [, kwds]]):使用非阻塞方式调用func(并行执行,堵塞方式必须等待上一个进程退出才能执行下一个进程),参数为传递给函数的参数列表,kwds为传递给func的关键字参数列表;

应用(func (args [, kwds]]):使用阻塞方式调用func

关闭():关闭池,使其不再接受新的任务,

终止():不管任务是否完成,立即终止;

加入():主进程阻塞,等待子进程的退出,必须在关闭或终止之后使用;

<强>应用堵塞式

得到multiprocessing  import 池   import 操作系统   import 时间   import 随机   def 工人(味精):   ,,,t_start =, time.time ()   ,,,print (“% d进程开始执行% d" % (os.getpid()、味精))   ,,,# random.random()随机生成0 ~ 1之间的浮点数   ,,,time . sleep (random.random () * 2),   ,,,t_stop =, time.time ()   ,,,print(味精、“执行完毕,耗时% 0.2 f" % (t_stop-t_start))   if  __name__ ==, & # 39; __main__ # 39;:   ,,,阿宝=池(3),#定义一个进程池,最大进程数3   ,,,for 小姐:拷贝范围(0,10):   ,,,,,,,# Pool.apply_async(要调用的目标,(传递给目标的参数元祖,))   ,,,,,,,#每次循环将会用空闲出来的子进程去调用目标   ,,,,,,,po.apply(工人,(我))   ,,,print(“- - - - - - - - - -“开始)   ,,,po.close(), #关闭进程池,关闭后阿宝不再接收新的请求   ,,,po.join(), #等待订单中所有子进程执行完成,必须放在亲密语句之后   ,,,print(“——端——产生绯闻。)

运行结果为:

4400进程开始执行0   0,执行完毕,耗1.89时   4401年进程开始执行1   1、执行完毕,耗1.91时   4402年进程开始执行2   2,执行完毕,耗1.64时   4400年进程开始执行3   3,执行完毕,耗1.16时   4401年进程开始执行4   4、执行完毕,耗1.85时   4402年进程开始执行5   5,执行完毕,耗0.29时   4400年进程开始执行6   6,执行完毕,耗0.19时   4401年进程开始执行7   7,执行完毕,耗1.19时   4402年进程开始执行8   8日,执行完毕,耗0.61时   4400年进程开始执行9   9日,执行完毕,耗1.08时   - - - - - - - - - -开始   ——端- - - - - -

什么是Python中的进程池