1.开启进程的两种方法
第一种:
from multiprocessing import Process
import time
def tak(name):
print('%s 进程' % name)
time.sleep(2)
print('%s 子进程 ' % name)
if __name__ =='__main__':
p1 = Process(target=tak,args=(1,)) # 创建线程
p2 = Process(target=tak,args=(2,))
p3 = Process(target=tak,args=(3,))
p4 = Process(target=tak,args=(4,))
p5 = Process(target=tak,args=(5,))
p1.start() # 向操作系统发送请求执行命令,但是操作系统什么时候执行就是操作系统的事了
p2.start()
p3.start()
p4.start()
p5.start()
print('主')
结果:
主 # 先运行的是主进程 1 进程 2 进程 4 进程 3 进程 5 进程 # 这里是会堵塞的,因为上面sleep了2秒,所有子进程都在这里进行堵塞了2秒后再进行打印,这里的结果为什么不是按顺序的,因为执行是操作系统进行执行的,你只能提交请求 1 子进程 2 子进程 4 子进程 3 子进程 5 子进程
第二种: 这里自己写类进行继承Process
from multiprocessing import Process
import time
class Tak(Process):
def __init__(self,name):
super().__init__() # 这里要加载Process中的方法
self.name = name
def run(self): # 这里必须是run方法
print('%s 进程' % self.name)
time.sleep(3)
print('%s 子进程' % self.name)
if __name__ == '__main__':
p1 = Tak('1') # 创建进程直接往自己的类里面进行传值就可以了
p2 = Tak('2')
p3 = Tak('3')
p4 = Tak('4')
p5 = Tak('5')
p1.start()
p2.start()
p3.start()
p4.start()
p5.start()
print('主')