首页 > 系统服务 > 详细

进程池非阻塞状态的使用

时间:2020-04-10 20:02:31      阅读:63      评论:0      收藏:0      [点我收藏+]
  • Pool可以提供指定数量的进程,供用户调用,当有新的请求提交到pool中时,如果池还没有满,那么就会创建一个新的进程用来执行该请求;但如果池中的进程数已经达到规定最大值,那么该请求就会等待,直到池中有进程结束,才会创建新的进程。

  • 格式: Pool([numprocess [, initializer [, initargs]]])
  • 其中numprocess是要创建的进程数。如果省略此参数,将使用cpu_count()的值。Initializer是每个工作进程启动时要执行的可调用对象。Initargs是要传递给initializer的参数元祖。Initializer默认为None

  • 技术分享图片

     

     

  •  1 import multiprocessing
     2 import time
     3 #进程执行的任务函数
     4 def func(msg):
     5     print(start:,msg)
     6     time.sleep(3)
     7     print(end:,msg)
     8 
     9 if __name__ == __main__:
    10     #创建初始化3的进程池
    11     pool = multiprocessing.Pool(3)
    12     #添加任务
    13     for i in range(1,6):
    14         msg = 任务%d%i
    15         pool.apply_async(func,(msg,))
    16     #如果进程池不在接受新的请求,调用close
    17     pool.close()
    18     #等待子进程结束
    19     pool.join()

     

  •  1 start: 任务1
     2 start: 任务2
     3 start: 任务3
     4 end: 任务1
     5 start: 任务4
     6 end: 任务2
     7 start: 任务5
     8 end: 任务3
     9 end: 任务4
    10 end: 任务5

     

进程池非阻塞状态的使用

原文:https://www.cnblogs.com/monsterhy123/p/12675670.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!