1 from multiprocessing.pool import Pool 2 import os, time, random 3 4 def worker(msg): 5 t_start = time.time() 6 print('%s开始执行,进程号为%d' % (msg, os.getpid())) 7 time.sleep(random.random()*2) 8 t_stop = time.time() 9 print(msg, '执行完毕, 耗时%.02f' % (t_stop-t_start)) 10 11 if __name__ == '__main__': 12 po = Pool() 13 for i in range(4): 14 # po.apply_async(要调用的函数, (传递给目标参数的元组)) 15 # 这里虽然创建了10进程,但是只有3个会执行 16 po.apply_async(worker, (i,)) 17 print('......start..........') 18 po.close() # 关闭进程池,关闭后po不再接受新的请求 19 po.join() # 等待po中所有子进程执行完成。必须放在close语句之后,等于阻塞作用,不然主进程会比子进程先结束 20 print('..........end..........')