注意:1)创建的进程一定要继承Process类
2) Process.init(self) :因为Process类本身也有__init___方法,这个子类相当于重写了这个方法。
但这样会带来一个问题,我们并没有完成的初始化一个进程类,所以就不能使用这个类继承的一 些方法和属性。
from multiprocessing import Process
import os
from urllib import request
class MyProcess(Process):
def __init__(self,url):#初始化时添加URL参数
Process.__init__(self)#使用父类的构造函数让父类帮你实现初始化,括号里记得写self
self.url=url
def run(self):
print('当前进程id:',os.getpid(),"父进程id:",os.getppid())#得到当前进程的id 以及父进程的id
filename=self.url.split('/')[-1]#字符串切割得到“xxx.png”的文件名格式
response=request.urlopen(self.url)#请求后返回响应
content=response.read()#获得得到返回的内容
with open(filename,'wb') as fp:#以二进制写入文件
fp.write(content)
if __name__ == '__main__':
url_list=[#URL列表
'https://p0.ssl.qhimg.com/t01eda6f6a63c17d58c.gif',
'http://ddd.ansusu.cn/shipin/picture/bottom_large_img.png'
]
for i in url_list:#循环创建进程
myprocess=MyProcess(i)
myprocess.start()#进程start