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")

 

posted @ 2020-05-30 12:26  乘风去破浪  阅读(490)  评论(0编辑  收藏  举报