# multiprocessing包是Python中的多进程管理包。与threading.Thread类似,它可以利用multiprocessing.Process对象来创建一个进程。 # 进程池 (Process Pool)可以创建多个进程。 # apply_async(func,args) 从进程池中取出一个进程执行func,args为func的参数。它将返回一个AsyncResult的对象,你可以对该对象调用get()方法以获得结果。 # close() 进程池不再创建新的进程 # join() wait进程池中的全部进程。必须对Pool先调用close()方法才能join。 # 阻塞当前进程,直到调用join方法的那个进程执行完,再继续执行当前进程。 from multiprocessing import Pool import os, time def long_time_task(name): print ('Run task %s (%s)...' % (name, os.getpid())) start = time.time() time.sleep(3) end = time.time() print ('Task %s runs %0.2f seconds.' % (name, (end - start))) if __name__=='__main__': print ('Parent process %s.' % os.getpid()) p = Pool() for i in range(4): p.apply_async(long_time_task, args=(i,)) print ('Waiting for all subprocesses done...') p.close() p.join() print ('All subprocesses done.')