在以下的文章之中我們來了解一下什麼是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中文網其他相關文章!