进程池
用于创建多个进程
multiprocessing.Pool常用函数解析:
- apply_async:使用非阻塞方式调用func
- apply:使用阻塞方式调用func
- close():关闭Pool,使其不再接受新的任务
- terminate():不管任务是否完成,立即终止
- join():主进程阻塞,等待子进程的退出,必须在close或terminate之后使用
创建进程池代码如下:
from multiprocessing import Pool
import time
def work(num):
print(num)
time.sleep(1)
if __name__ == '__main__':
po = Pool() #创建进程池,默认为cpu核数
for i in range(20):
po.apply_async(work,(i,)) #20个进程被进程池创建
po.close()#关闭进程池,进程池不再接受新的请求,之前的进程仍然存在
po.join()#必须放在po.close()之后
运行结果如下:
0
1
2
3
4
5
6
7
8
10
9
11
12
13
14
15
16
17
18
19