#进程池 """ 当需要创建子进程数量不多的时候,可以直接利用multiprocessing 中的Process动态生成多个进程,但是如果上百甚至上千个任务, """ from multiprocessing import Pool import os,time,random def download(i): print("(%s)ID号为:%d的进程开始执行"%(i,os.getpid())) t_start = time.time() time.sleep(random.random()*10) t_stop = time.time() print("(%s)ID:%d执行完毕,耗时%f秒!"%(i,os.getpid(),t_stop-t_start)) if __name__ == "__main__": po = Pool(3)#定义一个进程池,最大的进程数量 for i in range(10): #阻塞式的请求 自加阻塞 顺序结构 #必须要在进程池中没有进程的的时候 才会有新进程进入进程池 # po.apply(func=download,args=(i,)) #每次循环将会用空闲出来的子进程去调用目录--异步 # 不等待只要进程池的位置空出来就立刻补上 po.apply_async(func=download,args=(i,)) print("-----start-----") po.close()#关闭进程池 不再接受您的请求 po.join()#等待po中的所有的子进程执行完成,必须要放在close之后 print("-----end------")