python Pool常用函數(shù)用法總結(jié)
apply_async(func[,args[,kwds]):使用非堵塞調(diào)用func(并行執(zhí)行,堵塞方式必須等待上一個過程退出才能執(zhí)行下一個過程),args是傳輸給func的參數(shù)列表,kwds是傳輸給func的關(guān)鍵詞參數(shù)列表。
close():關(guān)閉Pool,使之不再接受新任務(wù)。
terminate():無論任務(wù)是否完成,都要立即終止。
join():主進程堵塞,等待子進程退出,必須在close或terminate之后使用。
2、實例#coding: utf-8import multiprocessingimport time def func(msg): print('msg:', msg) time.sleep(3) print('end') if __name__ == '__main__': cores = multiprocessing.cpu_count() pool = multiprocessing.Pool(processes=cores) print('Adding tasks...') for i in range(cores):msg = 'hello %d' %(i)pool.apply_async(func, (msg, )) #維持執(zhí)行的進程總數(shù)為processes,當(dāng)一個進程執(zhí)行完畢后會添加新的進程進去 print('Starting tasks...') pool.close() pool.join() #調(diào)用join之前,先調(diào)用close函數(shù),否則會出錯。執(zhí)行完close后不會有新的進程加入到pool,join函數(shù)等待所有子進程結(jié)束 print('Sub-process(es) done.')
實例擴展:
# -*- coding:utf-8 -*-from multiprocessing import Poolimport os, time, randomdef worker(msg): t_start = time.time() print('%s開始執(zhí)行,進程號為%d' % (msg,os.getpid())) # random.random()隨機生成0~1之間的浮點數(shù) time.sleep(random.random()*2) t_stop = time.time() print(msg,'執(zhí)行完畢,耗時%0.2f' % (t_stop-t_start))po = Pool(3) # 定義一個進程池,最大進程數(shù)3for i in range(0,10): # Pool().apply_async(要調(diào)用的目標(biāo),(傳遞給目標(biāo)的參數(shù)元祖,)) # 每次循環(huán)將會用空閑出來的子進程去調(diào)用目標(biāo) po.apply_async(worker,(i,))print('----start----')po.close() # 關(guān)閉進程池,關(guān)閉后po不再接收新的請求po.join() # 等待po中所有子進程執(zhí)行完成,必須放在close語句之后print('-----end-----')
運行結(jié)果
----start----0開始執(zhí)行,進程號為214661開始執(zhí)行,進程號為214682開始執(zhí)行,進程號為214670 執(zhí)行完畢,耗時1.013開始執(zhí)行,進程號為214662 執(zhí)行完畢,耗時1.244開始執(zhí)行,進程號為214673 執(zhí)行完畢,耗時0.565開始執(zhí)行,進程號為214661 執(zhí)行完畢,耗時1.686開始執(zhí)行,進程號為214684 執(zhí)行完畢,耗時0.677開始執(zhí)行,進程號為214675 執(zhí)行完畢,耗時0.838開始執(zhí)行,進程號為214666 執(zhí)行完畢,耗時0.759開始執(zhí)行,進程號為214687 執(zhí)行完畢,耗時1.038 執(zhí)行完畢,耗時1.059 執(zhí)行完畢,耗時1.69-----end-----
到此這篇關(guān)于python Pool常用函數(shù)用法總結(jié)的文章就介紹到這了,更多相關(guān)python Pool常用函數(shù)有哪些內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. ASP 信息提示函數(shù)并作返回或者轉(zhuǎn)向2. asp(vbs)Rs.Open和Conn.Execute的詳解和區(qū)別及&H0001的說明3. CSS hack用法案例詳解4. PHP設(shè)計模式中工廠模式深入詳解5. 用css截取字符的幾種方法詳解(css排版隱藏溢出文本)6. ASP+ajax實現(xiàn)頂一下、踩一下同支持與反對的實現(xiàn)代碼7. JSP數(shù)據(jù)交互實現(xiàn)過程解析8. ThinkPHP5實現(xiàn)JWT Token認證的過程(親測可用)9. asp中response.write("中文")或者js中文亂碼問題10. PHP session反序列化漏洞超詳細講解
