multiprocessing模块和创建进程
操作系统简单介绍
多道技术:(重点)
空间复用
时间复用
进程之间是空间隔离的
分时系统
实时系统
通用操作系统
提交任务的方式:同步异步 任务的执行状态:阻塞非阻塞
异步:任务的提交方式,多个任务提交出去,同时执行
同步阻塞
异步阻塞:
异步非阻塞:
同步非阻塞:
并发:伪并行,看着像同时运行,其实是任务之间的切换(遇到io切换的会提高代码效率) ,任务切换+保存状态(保存现场)
并行:真正的同时在运行,应用的是多核技术(多个cpu)
from multiprocessing import Process
进程三状态:就绪(等待操作系统调度去cpu里面执行) 执行 阻塞
Join方法:主进程等待子进程执行结束再继续执行
For 循环开启进程
进程的两种创建方式
第一种创建进程的方式
import time from multiprocessing import Process def func1(): time.sleep(1) print("11111") def func2(x): time.sleep(1) print("22222") print(x) def func3(i): print(i) if __name__ == '__main__': p1 = Process(target=func1,) p2 = Process(target=func2,kwargs={'x':'55开'}) p1.start() print("join先让p1创建的进程结束之后,再继续执行") p1.join() p2.start() for i in range(20): p = Process(target=func3,args=(i,)) p.start()
第二种创建进程的方式
from multiprocessing import Process #引入multiprocessing模块的Process类 class Foo(Process): #创建一个类,继承Process类 def __init__(self,n,m): #为了传自己创建的类的参数(n,m) super().__init__() #要先执行父类的__init__方法 self.n = n self.m = m def run(self): #创建进程一定要有这个方法. print(f"表面兄弟{self.n},和你不熟{self.m}") if __name__ == '__main__': #windows系统中,创建进程一定要有这一步,不然会一直递归创建进程 f = Foo("卢本伟","UU妹") #给自己创建的类创建一个对象 f.start() # 创建进程,且执行自己类中的 (run方法)