多程式 Multiprocessing 模組
先看看下面的幾個方法:
- star() 方法啟動程式,
join() 方法實現程式間的同步,
等待所有程式退出。- close() 用來阻止多餘的程式湧入程式池 Pool 造成程式阻塞。
引數:
- target 是函式名字,需要呼叫的函式
- args 函式需要的引數,
以 tuple 的形式傳入
用法:
multiprocessing.Process(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)
寫一個的例子:
from multiprocessing import Pool import os,time def pr(str): print("The " + str + " is %s" %(os.getpid())) time.sleep(1) print("The " + str + " is close") if __name__ == "__main__": print('-------------------------------') print("the current pid: "+ str(os.getpid())) # 預設為自己電腦的核數 p = Pool(2) for i in range(5): p.apply_async(pr,args=('xdxd',)) p.close() p.join() print("----------close-----------------")
通過結果可以看出,是2個程式同時啟動,同時啟動的程式數與pool中設定的數量和自己電腦的核數有關
結果:
------------------------------- the current pid: 9562 The xdxd is 9563 The xdxd is 9564 The xdxd is close The xdxd is close The xdxd is 9563 The xdxd is 9564 The xdxd is close The xdxd is close The xdxd is 9563 The xdxd is close ----------close-----------------