首頁  >  文章  >  後端開發  >  python進程池作用展示及實例解析

python進程池作用展示及實例解析

乌拉乌拉~
乌拉乌拉~原創
2018-08-23 17:41:502113瀏覽

在以下的文章之中我們來了解一下什麼是python中的進程池。了解python進程池的相關知識,以及進程池在python程式設計之中能起到什麼樣的作用。

進程池

Pool類別描述了一個工作進程池,他有幾個不同的方法可以讓任務卸載工作進程。

進程池內部維護一個進程序列,當使用時,則去進程池中取得一個進程,如果進程池序列中沒有可供使用的進進程,那麼程式就會等待,直到進程池中有可用進程為止。

我們可以用Pool類別建立一個進程池, 展開提交的任務給進程池。

我們來舉一個例子:

#apply
from  multiprocessing import Pool
import time

def f1(i):
    time.sleep(0.5)
    print(i)
    return i + 100
if __name__ == "__main__":
    pool = Pool(5)
    for i in range(1,31):
        pool.apply(func=f1,args=(i,))
        
#apply_async
def f1(i):
    time.sleep(0.5)
    print(i)
    return i + 100
def f2(arg):
    print(arg)
    
if __name__ == "__main__":
    pool = Pool(5)
    for i in range(1,31):
        pool.apply_async(func=f1,args=(i,),callback=f2)
    pool.close()
    pool.join()

一個進程池物件可以控制工作進程池的哪些工作可以被提交,它支援超時和回調的非同步結果,有一個類似map的實現。

processes :使用的工作進程的數量,如果processes是None那麼使用 os.cpu_count()傳回的數量。

initializer: 如果initializer是None,那麼每一個工作進程會在開始的時候呼叫initializer(*initargs)。

maxtasksperchild:工作進程退出之前可以完成的任務數,完成後用一個心的工作進程來取代原始進程,來讓閒置的資源被釋放。 maxtasksperchild預設是None,表示只要Pool存在工作進程就會一直存活。

context: 用在製定工作進程啟動時的上下文,一般使用multiprocessing.Pool() 或一個context物件的Pool()方法來建立一個池,兩種方法都適當的設定了context

注意:Pool物件的方法只可以被建立pool的程序所呼叫。

以上就是本篇文章所講述的所有內容,這篇文章主要介紹了python進程池的相關知識,希望你能藉助資料從而理解上述所說的內容。希望我在這片文章所講述的內容能夠對你有幫助,讓你學習python更加輕鬆。

更多相關知識,請造訪php中文網Python教學欄位。

以上是python進程池作用展示及實例解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn