python进程阻塞day17

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("主进程运行完毕")

猜你喜欢

转载自blog.csdn.net/qq_39112101/article/details/88423360