python网编_通过面向对象开启子进程

直接上代码:

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())
原文地址:https://www.cnblogs.com/gzying-01/p/10371477.html