进程池的一般用在多个任务执行,而且不知道具体要开多少进程才合适的情况,极大程度的节约了系统资源。
from multiprocessing import Pool
import os,time,random
def worker(msg):
t_start = time.time()
print("%s开始执行,进程号为%d" % (msg,os.getpid()))
time.sleep(random.random()*2)
t_stop = time.time()
print(msg,"执行完毕,耗时%0.2f" % (t_stop-t_start))
if __name__ == "__main__":
po = Pool(3) #创建最多的进程数
for i in range(0,10):
po.apply_async(worker,(i,)) #创建进程
print("-----start------")
po.close() #关闭进程池,关闭后不再接收新的请求
po.join() #等待po中所有的子进程执行完成后,必须放在close语句之后
print("-----end--------")