多程式Multiprocessing模組

Tynam.Yang發表於2018-04-16

多程式 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-----------------

 

相關文章