2.Process():主进程会等待子进程结束后,在结束整个程序。
3.Pool():主进程不会等待子进程,主进程结束后,整个程序都结束。可创建多个进程。
例:fork
import os,time num = 0 pid = os.fork() if pid == 0: time.sleep(2) num +=1 print('1子进程pid是%s....父进程的pid是:%s,num=%s'%(os.getpid(),os.getppid(),num)) else: num +=1 print('1我是父进程,我的pid是%s....我的子进程的pid是%s,num=%s'%(os.getpid(),pid,num)) 结果:
例:Process
import os import time from multiprocessing import Process def run_proc(): print('子进程运行中,pid=%s'%(os.getpid())) def test1(): print('父进程,pid=%s'%(os.getpid())) p = Process(target=run_proc) p.start() #p.join() #join()等待子进程结束后再继续往下运行,通常用于进程间的同步 print('父进程end...') if __name__ == '__main__': # test2() test1()结果:
例:Pool
from multiprocessing import Pool import os,time,random def worker(msg): start_time = time.time() print("%s开始执行,进程号为%d"%(msg,os.getpid())) time.sleep(random.random()) print("%s执行完毕。"%msg) if __name__ == '__main__': pool = Pool(10) for i in range(1,11): # apply_async:异步 pool.apply_async(worker,(i,)) #apply:同步 # pool.apply(worker,(i,)) print('------start-------') pool.close() # pool.join()#在进程池中,程序不会等待进程池执行完才结束。 time.sleep(0.1) print('--------end----------')结果:
