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