开启子进程的两种方法

开启子进程的方法一、

# -*- coding: utf-8 -*-

from multiprocessing import Process

import time


def task(name):
    print('%s is running' % name)
    time.sleep(3)
    print('over%s' % name)


# 注意,在windows系统中, 创建进程会将代码以模块方式从头到尾加载一遍
# 强调函数名一旦加括号,执行优先级最高
# 创建进程在windows系统中一定要写在 if __name__ == '__main__': 否则会循环导入
if __name__ == '__main__':
    p1 = Process(target=task, args=('qzk',))  # 这句话只是实例化的Process 的一个方法
    p1.start()  # 告诉操作系统创建一个进程,这只是告诉操作系统需要创建进程,什么时候创建,创建哪一个不知道
    p1.join()  # 主进程等待子进程结束才继续运行,其作用仅仅是让主进程等待子进程,不会影响子进程的进行
    print('主进程')

  开启子进程的方式二、

"""
方式二、
    创建一个继承Process的类,该类里面一定有一个run方法,实例化过程中 __init__()中为了防止数据属性与父类的重复导致名称空间问题,
    需要在init方法中继承父类的init super().__init__()再 self.name = name
"""
from multiprocessing import Process
import time


class MyProcess(Process):
    def __init__(self, name):
        super().__init__()
        self.name = name
    
    def run(self):
        print('%s is running' % self.name)
        time.sleep(2)
        print('%s is end' % self.name)


if __name__ == '__main__':
    obj = MyProcess('egon')  # 类实例化过程创建一个进程对象
    obj.start()  # .start() 是调用start方法,告诉操作系统去创建一个子进程
    time.sleep(3)
    print('主进程')

  

猜你喜欢

转载自www.cnblogs.com/qianzhengkai/p/10821395.html