1.操作系统介绍
2.进程的创建
1. multiprocessing模块
import time from multiprocessing import Process def f1(): time.sleep(3) print('xxxx') def f2(): time.sleep(3) print('ssss') # f1() # f2() #windows系统下必须写main,因为windows系统创建子进程的方式决定的,开启一个子进程,这个子进程 会copy一份主进程的所有代码,并且机制类似于import引入,这样就容易导致引入代码的时候,被引入的代码中的可执行程序被执行,导致递归开始进程,会报错 if __name__ == '__main__': # # p1 = Process(target=f1,) p2 = Process(target=f2,) # p1.start() p2.start()
2. for循环创建进程
import time from multiprocessing import Process def f1(i): time.sleep(3) print(i) if __name__ == '__main__': for i in range(20): p1 = Process(target=f1,args=(i,)) p1.start()
3. 进程的传参方式和创建方式
from multiprocessing import Process #演示两种传参方式 def f1(n): print(n) if __name__ == '__main__': # p1 = Process(target=f1,args=('大力与奇迹',)) #创建进程对象 p1 = Process(target=f1,kwargs={'n':'大力'}) #创建进程对象 p1.start() #给操作系统发送了一个创建进程的信号,后续进程的创建都是操作系统的事儿了 #进程的创建方式2 class MyProcess(Process): def __init__(self,n): super().__init__() #别忘了执行父类的init self.n = n def run(self): print('宝宝and%s不可告人的事情'%self.n) if __name__ == '__main__': p1 = MyProcess('高望') p1.start()
4. join方法
import time from multiprocessing import Process def f1(): time.sleep(2) print('xxxx') def f2(): time.sleep(2) print('ssss') # f1() # f2() if __name__ == '__main__': p1 = Process(target=f1,) p1.start() p1.join() # 主进程等待子进程运行完才继续执行 print('开始p2拉') p2 = Process(target=f2,) p2.start() p2.join() print('我要等了...等我的子进程...') # time.sleep(3) print('我是主进程!!!')