日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)Python教程:Python中的進(jìn)程池是什么

創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、舒城網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場(chǎng)景定制、成都商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為舒城等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

進(jìn)程池Pool

當(dāng)需要?jiǎng)?chuàng)建的子進(jìn)程數(shù)量不多時(shí),可以直接利用multiprocessing中的Process動(dòng)態(tài)成生多個(gè)進(jìn)程,但如果是上百甚至上千個(gè)目標(biāo),手動(dòng)的去創(chuàng)建進(jìn)程的工作量巨大,此時(shí)就可以用到multiprocessing模塊提供的Pool方法。

初始化Pool時(shí),可以指定一個(gè)進(jìn)程數(shù),當(dāng)有新的請(qǐng)求提交到Pool中時(shí),如果池還沒(méi)有滿,那么就會(huì)創(chuàng)建一個(gè)新的進(jìn)程用來(lái)執(zhí)行該請(qǐng)求;但如果池中的進(jìn)程數(shù)已經(jīng)達(dá)到指定的值,那么該請(qǐng)求就會(huì)等待,直到池中有進(jìn)程結(jié)束,才會(huì)創(chuàng)建新的進(jìn)程來(lái)執(zhí)行。

from multiprocessing import Pool
import os
import time
import random
def worker(msg):
    t_start = time.time()
    print("%d進(jìn)程開始執(zhí)行%d"%(os.getpid(),msg))
    #random.random()隨機(jī)生成0~1之間的浮點(diǎn)數(shù)
    time.sleep(random.random()*2) 
    t_stop = time.time()
    print(msg,"執(zhí)行完畢,耗時(shí)%0.2f"%(t_stop-t_start))
if __name__ == '__main__':
    po=Pool(3) #定義一個(gè)進(jìn)程池,進(jìn)程數(shù)3
    for i in range(0,10):
        #Pool.apply_async(要調(diào)用的目標(biāo),(傳遞給目標(biāo)的參數(shù)元祖,))
        #每次循環(huán)將會(huì)用空閑出來(lái)的子進(jìn)程去調(diào)用目標(biāo)
        po.apply_async(worker,(i,))
    print("----start----")
    po.close() #關(guān)閉進(jìn)程池,關(guān)閉后po不再接收新的請(qǐng)求
    po.join() #等待po中所有子進(jìn)程執(zhí)行完成,必須放在close語(yǔ)句之后
    print("-----end-----")

運(yùn)行結(jié)果為:

----start----
4353進(jìn)程開始執(zhí)行0
4354進(jìn)程開始執(zhí)行1
4355進(jìn)程開始執(zhí)行2
2,執(zhí)行完畢,耗時(shí)0.20
4355進(jìn)程開始執(zhí)行3
1,執(zhí)行完畢,耗時(shí)1.19
4354進(jìn)程開始執(zhí)行4
4,執(zhí)行完畢,耗時(shí)0.37
4354進(jìn)程開始執(zhí)行5
0,執(zhí)行完畢,耗時(shí)1.57
4353進(jìn)程開始執(zhí)行6
5,執(zhí)行完畢,耗時(shí)0.19
4354進(jìn)程開始執(zhí)行7
3,執(zhí)行完畢,耗時(shí)1.63
4355進(jìn)程開始執(zhí)行8
6,執(zhí)行完畢,耗時(shí)0.49
4353進(jìn)程開始執(zhí)行9
8,執(zhí)行完畢,耗時(shí)0.75
7,執(zhí)行完畢,耗時(shí)0.90
9,執(zhí)行完畢,耗時(shí)0.63
-----end-----

相關(guān)推薦:《python視頻教程》

multiprocessing.Pool常用函數(shù)解析:

apply_async(func[, args[, kwds]]) :使用非阻塞方式調(diào)用func(并行執(zhí)行,堵塞方式必須等待上一個(gè)進(jìn)程退出才能執(zhí)行下一個(gè)進(jìn)程),args為傳遞給func的參數(shù)列表,kwds為傳遞給func的關(guān)鍵字參數(shù)列表;

apply(func[, args[, kwds]]):使用阻塞方式調(diào)用func

close():關(guān)閉Pool,使其不再接受新的任務(wù);

terminate():不管任務(wù)是否完成,立即終止;

join():主進(jìn)程阻塞,等待子進(jìn)程的退出, 必須在close或terminate之后使用;

apply堵塞式

from multiprocessing import Pool
import os
import time
import random
def worker(msg):
    t_start = time.time()
    print("%d進(jìn)程開始執(zhí)行%d"%(os.getpid(),msg))
    #random.random()隨機(jī)生成0~1之間的浮點(diǎn)數(shù)
    time.sleep(random.random()*2) 
    t_stop = time.time()
    print(msg,"執(zhí)行完畢,耗時(shí)%0.2f"%(t_stop-t_start))
if __name__ == '__main__':
    po=Pool(3) #定義一個(gè)進(jìn)程池,進(jìn)程數(shù)3
    for i in range(0,10):
        #Pool.apply_async(要調(diào)用的目標(biāo),(傳遞給目標(biāo)的參數(shù)元祖,))
        #每次循環(huán)將會(huì)用空閑出來(lái)的子進(jìn)程去調(diào)用目標(biāo)
        po.apply(worker,(i,))
    print("----start----")
    po.close() #關(guān)閉進(jìn)程池,關(guān)閉后po不再接收新的請(qǐng)求
    po.join() #等待po中所有子進(jìn)程執(zhí)行完成,必須放在close語(yǔ)句之后
    print("-----end-----")

運(yùn)行結(jié)果為:

4400進(jìn)程開始執(zhí)行0
0,執(zhí)行完畢,耗時(shí)1.89
4401進(jìn)程開始執(zhí)行1
1,執(zhí)行完畢,耗時(shí)1.91
4402進(jìn)程開始執(zhí)行2
2,執(zhí)行完畢,耗時(shí)1.64
4400進(jìn)程開始執(zhí)行3
3,執(zhí)行完畢,耗時(shí)1.16
4401進(jìn)程開始執(zhí)行4
4,執(zhí)行完畢,耗時(shí)1.85
4402進(jìn)程開始執(zhí)行5
5,執(zhí)行完畢,耗時(shí)0.29
4400進(jìn)程開始執(zhí)行6
6,執(zhí)行完畢,耗時(shí)0.19
4401進(jìn)程開始執(zhí)行7
7,執(zhí)行完畢,耗時(shí)1.19
4402進(jìn)程開始執(zhí)行8
8,執(zhí)行完畢,耗時(shí)0.61
4400進(jìn)程開始執(zhí)行9
9,執(zhí)行完畢,耗時(shí)1.08
----start----
-----end-----

說(shuō)明:通過(guò)運(yùn)行結(jié)果可以看出來(lái),阻塞式會(huì)等進(jìn)程池中的進(jìn)程都執(zhí)行完畢了才會(huì)運(yùn)行主進(jìn)程的start和end的打印

相關(guān)推薦:

Python中的進(jìn)程是什么


網(wǎng)站欄目:創(chuàng)新互聯(lián)Python教程:Python中的進(jìn)程池是什么
文章起源:http://www.5511xx.com/article/coecgsp.html