#-*-coding:utf-8-*- '''multiprocessing模塊提供了一個Pool類來表明進程池對象 一、Pool能夠提供指定數量的進程供用戶調用,默認大小是CPU的核心數; 二、當有新的請求提交到Pool中,若是池尚未滿,name就會建立一個新的進程用來執行改請求; 三、但若是池中的進程數已經達到規定最大值,那麼該請求就會等待池中有進程結束,纔會建立新的進程。 ''' from multiprocessing import Pool import os,time,random def run_task(name): print("任務:%s(%s)運行..."%(name,os.getpid())) time.sleep(random.random()*3) print("任務:%s 結束!"%name) if __name__=="__main__": print("當前進程ID: %s" %os.getpid()) p=Pool(processes=3) for i in range(5): p.apply_async(run_task,args=(i,)) print("等待全部進程結束。") p.close() p.join() print("全部進程結束") '''Pool對象調用join()方法會等待全部子進程執行完畢,調用join()以前 必須先調用close(),調用close()以後就不能繼續添加新的Process了''
摘自《Python爬蟲開發與項目實戰》python