python中進程池的用法

導入相關模塊

import multiprocessing
import time
import randam
import os 

創建進程池中進程要執行的任務函數

def worker(msg):
    t_start = time.time()
    print("%s開始執行,進程號爲%d" % (msg,os.getpid()))
    # random.random()隨機生成0~1之間的浮點數
    time.sleep(random.random()*2)
    t_stop = time.time()
    pring(msg,"執行完畢,耗時%02.f" % (t_stop-t_start))

1. 創建進程池

if __name_ == '__main__':

    pool = multiprocessing.Poll(3)

2. 添加任務—>兩種

    #   apply阻塞的任務添加方式 任務添加到進程池中的京城中執行 
    # 會阻塞等待任務執行完成 纔會繼續往下執行
    pool.apply(func=worker, args=('000,'))
    pool.apply(func=worker, args=('111,'))

    # 非阻塞的任務添加添加方式
    # 把任務添加到進程中執行 不阻塞等待任務執行完成
    pool.apply_async(func=worker, args=('222,'))
    pool.apply_async(func=worker, args=('333,'))
    # 主進程一旦退出 就會導致所有任務<子進程 不是通過繼承的方式創建出來的>全部結束

3 關閉進程池–>不再允許添加任務

    # pool.close()
    # 3 直接終止所有正在運行的子進程
    pool.terminate()

4 等待所有任務執行完成

    #   一般使用非阻塞的任務添加方式需要配合.join()
    pool.join()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章