Python进程池如何使用
1、启动Ubuntu虚拟机,在桌面空白处右键鼠标,打开终端。
2、使用Ubuntu系统自带的gedit编辑器创建‘pool.py’文件,并在文件写代码如下:from multiprocess足毂忍珩ing import Poolimport osdef 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 Poolimport os,timedef 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 Poolimport 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、在终端运行代码,结果如下图所示,在子进程执行完成后,主进程才退出。