1.什么是进程池:
进程池内部维护一个进程序列,当使用时,则去进程池中获取一个进程,如果进程池序列中没有可供使用的进进程,那么程序就会等待,直到进程池中有可用进程为止。
2.参数介绍:
Pool(numprocess,initializer,initargs) 创建进程池
numprocess:要创建的进程数,如果省略,将默认使用cpu_count()的值initializer:是每个工作进程启动时要执行的可调用对象,默认为Noneinitargs:是要传给initializer的参数组 3.代码示例:
from multiprocessing import Pool #导入pool模块import os,timedef work(n): print('task <%s> is runing' %os.getpid()) time.sleep(2) return n**2if __name__ == '__main__': print(os.cpu_count()) #这条命令用来获取cpu的个数 p=Pool(4) #指定最大的进程 不写默认为cpu的个数。 # for i in range(10): # res=p.apply(work,args=(i,)) #apply 同步执行。一个一个执行,效率偏低 (了解) # print(res) 获取的结果是 work的返回值。也就是return后面的结果。 res_l=[] for i in range(10): res=p.apply_async(work,args=(i,)) #异步的提交任务,只负责往队列中加任务。这样会生成一些对象。 res_l.append(res) #将产生的对象方法放到一个列表中 # p.close() #不允许在向进程池中提交任务。 p.join() #等待p结束完成在执行主程序中的取值方法。 for res in res_l: print(res.get()) #使用get方法从进程池中取值。