注意:程序池中的程序如果發生異常時,主程序中並不會得到異常提示。
如果程序池中的程序要使用佇列(queue)實現程序間通訊,必須使用queue = multiprocessing.manager().queue() 的方式建立佇列(需要先導入multiprocessing模組)。
demo.py(程序池):
# -*- coding:utf-8 -*-
from multiprocessing import pool
import os, time, random
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()
print(msg,"執行完畢,耗時%0.2f" % (t_stop-t_start))
po = pool(3) # 定義乙個程序池,最大程序數3
# 向程序池中迴圈新增10個任務
for i in range(0,10):
# 每次迴圈將會用空閒出來的子程序去呼叫目標
print("----start----")
po.close() # 關閉程序池,關閉後po不再接收新的任務請求
po.join() # 等待po程序池中所有子程序執行完成,必須放在close語句之後 (主程序結束後,程序池就會結束,程序池中的任務也會結束。 所以在結束主程序之前,先等待程序池中的任務執行完成)
print("-----end-----")
python 程序 Python程序池
當需要建立的子程序數量不多時,可以直接利用multiprocessing中的process動態成生多個程序,但如果是上百甚至上千個目標,手動的去建立程序的工作量巨大,此時就可以用到multiprocessing模組提供的pool方法。初始化pool時,可以指定乙個最大程序數,當有新的請求提交到poo...
python多程序之程序池
在利用python進行系統管理的時候,特別是同時操作多個檔案目錄,或者遠端控制多台主機,並行操作可以節約大量的時間。當被操作物件數目不大時,可以直接利用multiprocessing中的process動態成生多個程序,十幾個還好,但如果是上百個,上千個目標,手動的去限制程序數量卻又太過繁瑣,此時可以...
python 多程序 高階 程序池
如果需要啟動大量的子程序,使用程序池批量建立子程序的方式更加常見,因為當被操作對物件數目不大時,可以直接利用multiprocessing中的process動態生成多個程序,如果數量大,此時就應該使用pool。pool 可以提供指定數量的程序供使用者呼叫,預設大小是cpu的核數。當有新的請求提交到p...