开启子进程的两种方式


#方式一:
from multiprocessing import Process  # 开启子进程
import time

def task(name):
    print("%s is running" % name)
    time.sleep(3)
    print("%s is done" % name)

if __name__ == "__main__":
    #Process(target=task,kwargs={"name":"子进程1"}) # 字典的方式传参
    p = Process(target=task,args=("子进程1",)) # 实例化task得到对象p,元组的方式传参
    p.start() # 仅仅只是给操作系统发送了一个信号,即操作系统申请内存空间,把父进程的地址空间的数据拷贝给子进程,
              # 作为子进程运行的初始状态,开始运行之后再去执行task函数的功能
    print("主进程")

#方式二:
from multiprocessing import Process  # 开启子进程
import time
class Myprocess(Process):
    def __init__(self,name):
        super().__init__()  # 如果有用到父类的功能需要重用一下父类的init功能
        self.name = name  # 这里再定义自己的功能

    def run(self):  # 固定函数名run
        print("%s is running" % self.name)
        time.sleep(3)
        print("%s is done" % self.name)

if __name__ == "__main__":
    p = Myprocess("子进程1")
    p.start()  # 默认调用的是Myprocess下面的run方法

    print("主进程")

 

posted @ 2020-01-31 15:31  南啾  阅读(149)  评论(0编辑  收藏  举报