''' 创建新的进程的第二种方法: 使用类的方式,可以自己定义一个类,继承Process类,每次实例化这个类的时候, 就等于实例化一个进程对象 ''' from multiprocessing import Process import os, time # 定义一个类,继承Process类 class Download(Process): def __init__(self,interval):#这里重载父类__init__方法的原因是对象要传个参数,与下面run方法的执行没有关系 Process.__init__(self) self.interval=interval#参数所对应的属性 # 重写Process类中的run()方法 def run(self): # 开启这个进程所要执行的代码 t_start=time.time() # time.sleep(3) # 阻塞的另一种实现形式 print('开启进程:%s 进行下载操作' % os.getpid()) # if kwargs['device'] == 'iphoneX': # path = 'http://www.langlang2017.com/iphoneX' # # print('下载%s对应的%s.%s' % (kwargs['device'], fileName, type)) #print('下载:%s.%s.%s' % (path, fileName, type)) print('子进程(%s)开始执行,父进程为(%s)' % (os.getpid(), os.getppid())) time.sleep(self.interval) t_stop=time.time() print('子进程(%s)执行结束,耗时%f秒'%(os.getpid(),t_stop-t_start)) if __name__ == '__main__': t_start=time.time() print('当前进程(%s)' % os.getpid()) p = Download(2) # 对于一个不包含target属性的Process类, # 执行start()方法,表示子进程就会运行类中的run() p.start() #p.join(10) time.sleep(10)#区分sleep与join()区别 t_stop=time.time() print('主进程%s执行结束,耗时%f秒'%(os.getpid(),t_stop-t_start))
/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 /Users/apple/PycharmProjects/stage4/createProcessSecondMethod/process06.py
当前进程(10593)
开启进程:10594 进行下载操作
子进程(10594)开始执行,父进程为(10593)
子进程(10594)执行结束,耗时2.000305秒
主进程10593执行结束,耗时10.006700秒
Process finished with exit code 0