-
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