python 阻塞模式 进程池
1 """ 2 阻塞模式:一个一个任务单独放进进程池,处理完一个再放下一个任务进来,主进程要等着些执行完再执行 3 """ 4 5 import os 6 import time 7 from multiprocessing import Pool 8 from random import random 9 10 11 def task(name): 12 print("进行任务{} 进程ID:{}".format(name, os.getpid())) 13 start = time.time() 14 # random() 的值是0到1之间,这里就表示休眠 0到2秒 15 time.sleep(random() * 2) 16 end = time.time() 17 print("完成任务:{} 用时:{} 进程ID:{}".format(name, (end - start), os.getpid())) 18 19 20 if __name__ == '__main__': 21 pool = Pool(5) # 创建一个进程池,里面放5个进程 22 tasks = ["任务1", "任务2", "任务3", "任务4", "任务5", "任务6", "任务7"] 23 for t in tasks: 24 # apply 阻塞模式,一个一个任务单独放进进程池,进程池中的进程被轮流使用 25 pool.apply(task, args=(t,)) 26 27 pool.close() # 当进程池close的时候并未关闭进程池,只是会把状态改为不可再插入元素的状态,完全关闭进程池使用 28 # pool.join() # 阻塞模式的只有当它里面的任务全部都执行完,才继续,所以不需要这步 29 30 31 print("over")