程式池

賣魚熊發表於2019-02-14

 

 

from multiprocessing import Pool
import os
import time


def worker(num):
    print("task <%s> is runing <%d>" % (os.getpid(), num))
    time.sleep(2)


def main():
    # 定義一個程式池,最大程式數3
    po = Pool(3)

    for i in range(0, 10):
        # Pool().apply_async(要呼叫的目標,(傳遞給目標的引數元祖,))
        # 每次迴圈將會用空閒出來的子程式去呼叫目標
        po.apply_async(worker, args=(i,))

    print("---start---")
    # 關閉程式池,關閉後po不再接收新的請求
    po.close()
    # 等待po中所有子程式執行完畢,必須放在close語句之後
    po.join()
    print("---end---")


if __name__ == `__main__`:
    main()

 

相關文章