python Pool常用函數(shù)用法總結(jié)
1、說明
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-8
import multiprocessing
import 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,當一個進程執(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 Pool
import os, time, random
def 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ù)3
for i in range(0,10):
# Pool().apply_async(要調(diào)用的目標,(傳遞給目標的參數(shù)元祖,))
# 每次循環(huán)將會用空閑出來的子進程去調(dià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í)行,進程號為21466
1開始執(zhí)行,進程號為21468
2開始執(zhí)行,進程號為21467
0 執(zhí)行完畢,耗時1.01
3開始執(zhí)行,進程號為21466
2 執(zhí)行完畢,耗時1.24
4開始執(zhí)行,進程號為21467
3 執(zhí)行完畢,耗時0.56
5開始執(zhí)行,進程號為21466
1 執(zhí)行完畢,耗時1.68
6開始執(zhí)行,進程號為21468
4 執(zhí)行完畢,耗時0.67
7開始執(zhí)行,進程號為21467
5 執(zhí)行完畢,耗時0.83
8開始執(zhí)行,進程號為21466
6 執(zhí)行完畢,耗時0.75
9開始執(zhí)行,進程號為21468
7 執(zhí)行完畢,耗時1.03
8 執(zhí)行完畢,耗時1.05
9 執(zhí)行完畢,耗時1.69
-----end-----
到此這篇關(guān)于python Pool常用函數(shù)用法總結(jié)的文章就介紹到這了,更多相關(guān)python Pool常用函數(shù)有哪些內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實現(xiàn)發(fā)送form-data數(shù)據(jù)的方法詳解
這篇文章主要介紹了python實現(xiàn)發(fā)送form-data數(shù)據(jù)的方法,結(jié)合實例形式分析了Python發(fā)送form-data數(shù)據(jù)的相關(guān)操作步驟、實現(xiàn)方法與注意事項,需要的朋友可以參考下2019-09-09
使用python讀取csv文件快速插入數(shù)據(jù)庫的實例
今天小編就為大家分享一篇使用python讀取csv文件快速插入數(shù)據(jù)庫的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
python實現(xiàn)Windows電腦定時關(guān)機
這篇文章主要為大家詳細介紹了python實現(xiàn)Windows電腦定時關(guān)機功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06
python基于exchange函數(shù)發(fā)送郵件過程詳解
這篇文章主要介紹了python基于exchange函數(shù)發(fā)送郵件過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-11-11
Python求算數(shù)平方根和約數(shù)的方法匯總
這篇文章主要介紹了 Python求算數(shù)平方根和約數(shù)的方法匯總的相關(guān)資料,需要的朋友可以參考下2016-03-03
Django 實現(xiàn)外鍵去除自動添加的后綴‘_id’
今天小編就為大家分享一篇Django 實現(xiàn)外鍵去除自動添加的后綴‘_id’,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11

