天天看點

Python多程序multiprocessing

import multiprocessing
import time

# 具體的處理函數,負責處理單個任務
def func(msg):
  # for i in range(3):
    print (msg)
    time.sleep(1)
    return "done " + msg
if __name__ == "__main__":
    # 程序池,建立多個程序,并行執行
    pool = multiprocessing.Pool(processes=4)
    # 把運作的結果添加到一個清單裡,關注每個程序的執行結果
    result = []
    # 生産msg,并加入程序池
    for i in range(10):
        msg = "hello %d" %(i)
        # apply_async 它是非阻塞且支援結果傳回進行回調
        result.append(pool.apply_async(func, (msg, )))
        # 關閉程序池,使其不在接受新的任務
    pool.close()
    # 主程序阻塞等待子程序的退出,join方法必須在close或terminate之後使用。
    pool.join()
    # 檢視執行結果
    for res in result:
        print (res.get())
    print ("Sub-process(es) done.")