Python进程池如何使用
1、启动Ubuntu虚拟机,在桌面空白处右键鼠标,打开终端。

2、使用Ubuntu系统自带的gedit编辑器创建‘pool.py’文件,并在文件写代码如下:
from multiprocessing import Pool
import os
def worker(ms):
print ('子进程id:%s,做%s事' %(os.getpid(),ms))
po = Pool(3)
for i in range(0,10):
po.apply_async(worker,(i,))

3、保存代码,在终端运行代码
python3 pool.py
会发现并没有打印出任何内容,因为主进程结束了。子进程还没执行到。

4、修改代码如下,主进程慢一点结束,就可以看到效果
from multiprocessing import Pool
import os,time
def worker(ms):
print ('子进程id:%s,做%s事' %(os.getpid(),ms))
po = Pool(3)
for i in range(0,10):
po.apply_async(worker,(i,))
time.sleep(5)

5、保存代码,在终端运行,就可以看到子进程在执行了,如下图所示
python3 pool.py

6、去掉第4步代码中的time.sleep延时,使用下面代码:
from multiprocessing import Pool
import os,time
def worker(ms):
print ('子进程id:%s,做%s事' %(os.getpid(),ms))
po = Pool(3)
for i in range(0,10):
po.apply_async(worker,(i,))
po.close()
po.join()
po.join()这行代码的意识是阻塞主进程的执行。

7、在终端运行代码,结果如下图所示,在子进程执行完成后,主进程才退出。
