當(dāng)前位置:
首頁 >
5-14 进程池
發(fā)布時間:2025/7/25
49
豆豆
python中的進(jìn)程池
1.進(jìn)程池的概念
python中,進(jìn)程池內(nèi)部會維護(hù)一個進(jìn)程序列。當(dāng)需要時,程序會去進(jìn)程池中獲取一個進(jìn)程。
如果進(jìn)程池序列中沒有可供使用的進(jìn)程,那么程序就會等待,直到進(jìn)程池中有可用進(jìn)程為止。
2.進(jìn)程池的內(nèi)置方法
- apply 從進(jìn)程池里取一個進(jìn)程并同步執(zhí)行
- apply_async 從進(jìn)程池里取出一個進(jìn)程并異步執(zhí)行
- terminate 立刻關(guān)閉進(jìn)程池
- join 主進(jìn)程等待所有子進(jìn)程執(zhí)行完畢,必須在close或terminete之后
- close 等待所有進(jìn)程結(jié)束才關(guān)閉線程池
同步是指一個進(jìn)程在執(zhí)行某個請求的時候,必須要到收到對方返回的信息才繼續(xù)執(zhí)行下去
異步是指進(jìn)程在執(zhí)行某個請求時,不管其他的進(jìn)程的狀態(tài),這個進(jìn)程就執(zhí)行后續(xù)操作;
當(dāng)有消息返回時系統(tǒng)會通知進(jìn)程進(jìn)行處理,這樣可以提高執(zhí)行的效率
例如:打電話就是同步通信,發(fā)信息就是異步通信。
3.進(jìn)程池的使用
代碼如下:
from multiprocessing import Pool import timedef func(args): time.sleep(1) #程序休眠1s print("%s------>%s"%(args,time.ctime())) #打印參數(shù)及時間 if __name__=="__main__": p1=Pool(2) #設(shè)定開啟2個進(jìn)程池 for i in range(10): p1.apply_async(func=func,args=(i,)) #設(shè)定異步執(zhí)行任務(wù) p1.close() #關(guān)閉進(jìn)程池 time.sleep(2) #程序休眠2s p1.terminate() #關(guān)閉進(jìn)程池 p1.join() #阻塞進(jìn)程池 print("ending") #打印結(jié)束語句程序執(zhí)行結(jié)果:
0------>Thu Jul 20 20:18:43 2017 1------>Thu Jul 20 20:18:43 2017 ending可以看到,在程序執(zhí)行過程中,關(guān)閉進(jìn)程池,則程序會立即停止,不會再繼續(xù)執(zhí)行后續(xù)語句。
4.修改程序,使程序能夠執(zhí)行全部的任務(wù)
代碼如下:
from multiprocessing import Pool import timedef func(args): time.sleep(1) #休眠1s print("%s------>%s"%(args,time.ctime())) #打印傳遞的參數(shù)及時間 if __name__=="__main__": p1=Pool(2) #定義2個進(jìn)程池 for i in range(10): #定義循環(huán)10次 p1.apply_async(func=func,args=(i,)) #異步執(zhí)行任務(wù) p1.close() #等待所有的任務(wù)都完成才關(guān)閉進(jìn)程池 p1.join() print("ending")執(zhí)行結(jié)果如下:
0------>Thu Jul 20 20:19:12 2017 1------>Thu Jul 20 20:19:12 2017 2------>Thu Jul 20 20:19:13 2017 3------>Thu Jul 20 20:19:13 2017 4------>Thu Jul 20 20:19:14 2017 5------>Thu Jul 20 20:19:14 2017 6------>Thu Jul 20 20:19:15 2017 7------>Thu Jul 20 20:19:15 2017 8------>Thu Jul 20 20:19:16 2017 9------>Thu Jul 20 20:19:16 2017 ending轉(zhuǎn)載于:https://www.cnblogs.com/yzxing/p/9038122.html
總結(jié)
- 上一篇: 清结算系统的一些思考
- 下一篇: 更新版PowerBI发布了-- Powe