我们上一节说的fork()函数 因为Windows上面没有这个函数没有就不支持我们跨平台的去运行。所以我们一般使用Process来创建子进程。
multiprocessing模块就是跨平台版本的多进程模块。
multiprocessing模块提供了⼀个Process类来代表⼀个进程对象,下⾯的例⼦ 演示了启动⼀个⼦进程并等待其结束:
1 from multiprocessing import Process
2 import time
3
4 def test():
5 while True:
6 print("---1---")
7 time.sleep(1)
8
9 p = Process(target=test)
10 p.start() #让这个进程来执行test函数里的代码
11
12 while True:
13 print("---main---")
14 time.sleep(1)
join括号中不携带参数,表示⽗进程在这个位置要等待p1进程执⾏完成后
执行结果:
创建⼦进程时,只需要传⼊⼀个执⾏函数和函数的参数,创建⼀个 Process实例,⽤start()⽅法启动,这样创建进程⽐fork()还要简单。 join()⽅法可以等待⼦进程结束后再继续往下运⾏,通常⽤于进程间的同步。
进程的创建-Process⼦类
18 from multiprocessing import Process
19 import time
20
21 class newProcess(Process):
22 def run(self):
23 while True:
24 print("---1---")
25 time.sleep(1)
26
27 p = newProcess()
28 p.start() #虽然上面没有start函数但是上面Process父类里面有start方法,而这个start方法里面隐藏了表现形式然后从start里面调取run方法,通过父类的start调取run方法父类就相当于一个端口
29
30 while True:
31 print("---main---")
32 time.sleep(1)