導入相關模塊
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()