开启子进程的方式
方式一、
from multiprocessing import Process
import time
def task():
print('进程 start')
time.sleep(2)
print('进程 end')
if __name__ == '__main__':
p = Process(target=task)
p.start() # 告诉操作系统我要开子进程,告诉完了这行代码就算执行完了,接着往下走,具体操作系统什么时候开子,开多长时间跟你没关系。
time.sleep(5)
print('主进程/父进程')
首先介绍一下新模块 multiprocessing,导入这个模块里的Process类
首先写一个方法,在这个方法里面写上你主要的逻辑业务。
然后下面要用if __name__ == '__main__':,在这个里面开启子进程,为什么用这个,因为如果不用的话,就会无限循环开启子进程。
在里面p = Process(target=task) 然后p.start() 就会执行方法里的代码了。
方法二、
from multiprocessing import Process
import time
class Test(Process):
def __init__(self,sex):
super().__init__()
self.sex = sex
def run(self):
print(f'子进程的性别是{self.sex} start')
time.sleep(2)
print('子进程 end')
if __name__ == '__main__':
p = Test('女')
p.start() # 向操作系统 发送开启子进程的请求
print('主进程')
这个就是以类的形式开启。其实是一个道理的,不过一定要在类里面重写run方法。他执行的就是run里面的方法。
进程的内存空间间隔
各个进程之间互不干扰,变量也不共享。