from urllib import request import os from multiprocessing import Process def A(): print("进程A") def B(): print("进程B") if __name__ == '__main__': # 结束了最后执行 # p1=Process(target=A) # p2=Process(target=B) # list=[] # p1.start() # p2.start() # list.append(p1) # list.append(p2) # for p in list: # p.join() # print("结束了") # """ # #结果为: # 进程A # 进程B # 结束了 # """ p1=Process(target=A) p2=Process(target=B) list=[] p1.start() p2.start() print("结束了") """ 结束了先执行,结果如下: 结束了 进程A 进程B """
#进程阻塞 from urllib import request #引入包 from multiprocessing import Process #引入进程调用包 import os def downloader(url,**kwargs): #制作下载 器 print("当前进程为:",os.getpid(),os.getppid()) #判断当前进程号(子进程),获取当前进程的父进程id file_name=url.split("/")[-1] #获取图片的尾部名字 response=request.urlopen(url) #打开url地址并且获取图片信息 content=response.read() #读出图片内容 with open(file_name,"wb") as fb: #把图片写入文件 fb.write(content) if __name__ == '__main__': #定义主进程 # for i in range(1,5): #一次循环生成4张图片的序号在下面生成四张图片地址和四个子进程,并开启四个子进程 # url="http://www.langlang2017.com/img/banner{}.png".format(i) # p=Process(target=downloader,args=(url,)) #target后函数名字",args=“传入函数的参数” # p.start() url_list=[ "https://img-ads.csdn.net/2019/201903061715273943.jpg", "https://img-ads.csdn.net/2019/201903061737562959.jpg", ] name_list=["进程1","进程2"] p_list=[] #设置一个进程列表 i=0 for url in url_list: n=name_list[i] i=i+1 p=Process(target=downloader,name=n,args=(url,),kwargs={"pro":"最高等级"}) print("子进程%s将被运行"%(p.name)) p.start() p_list.append(p) #把进程加入到进程列表 for p in p_list: #阻塞所有进程,直到所有进程执行完毕 p.join() #进程阻塞 print("主进程运行完毕")