直接上代码:
import os from multiprocessing import Process class MyProcess(Process): # 这里创建一个类 继承Process def run(self): # 必须写一个run方法 print(os.getpid()) if __name__ == '__main__': p = MyProcess() # 用类进行实例化一个子进程③ p.start() # 这里启动子进程 print('主',os.getpid())
这就通过面向对象开启了一个子进程,那么问题来了:
通过面向对象的方式启动子进程,如何传递参数呢?(join一定能用,有机会再证明)
如果直接在实例化③的过程中 p = MyProcess('参数') 这里传参会通过__init__(self):
那机智的我就知道了啦 在MyProcess类中写一个__init__(self,name)方法,不就万事大吉了么,下班吃饭...
太天真,凡事看霸特:Process中的__init__有很大作用我们绝对不能丢失。
so,super().__init()的作用就体现出来了
看下面:
import os from multiprocessing import Process class MyProcess(Process): def __init__(self,name): # 这里通过__init__传参给self super().__init__() # 这里通super()执行父类中的__init__,就是Process类中的__init__,perfect! self.name = name def run(self): print(os.getpid(),self.name) if __name__ == '__main__': p = MyProcess('carrie') # 这里实例化的时候传参 p.start() p.join() print('主',os.getpid())