开启子进程的方法一、
# -*- 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('主进程')