进程池非阻塞状态的使用

  • 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