1、说明
初始化Pool时,可以指定最大流程数。当新请求提交到Pool时,如果池未满,则创建新流程以执行该请求。但是,如果池中的流程数达到指定的最大值,则等待该请求,直到池中的流程结束为止,以之前的流程执行新的任务。
2、实例
# -*- coding:utf-8 -*- import os, time, random from multiprocessing import Pool def worker(msg): t_start = time.time() print("%s开始执行,进程号为%d" % (msg,os.getpid())) # random.random()随机生成0~1之间的浮点数 time.sleep(random.random()*2) t_stop = time.time() print(msg,"执行完毕,耗时%0.2f\n" % (t_stop-t_start)) def main(): po = Pool(3) # 定义一个进程池,最大进程数3 for i in range(0,10): # Pool().apply_async(要调用的目标,(传递给目标的参数元祖,)) # 每次循环将会用空闲出来的子进程去调用目标 po.apply_async(worker,(i,)) print("----start----") po.close() # 关闭进程池,关闭后po不再接收新的请求 po.join() # 等待po中所有子进程执行完成,必须放在close语句之后 print("-----end-----") if __name__ == "__main__": main()
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试