multiprocessing

Python aiomultiprocess 套件是如何運作的?

aiomultiprocess 是 1 個既實用又有趣的套件。

它實用的地方在於能將多個 coroutines 分散到多個 processes 執行(底層使用 multiprocessing 模組),藉此提升 asyncio 的效能。

而有趣的地方在於 multiprocessing 並不是 1 個 asynchronous 模組,而 aiomultiprocess 卻能將 multiprocessing 與 asyncio 整合在一起 ,著實相當有趣!

如果沒有相當的程式設計功力,其實也難以想像 aiomultiprocess 底層是如何實作的。因此本文將研究 aiomultiprocess 套件如何運作,以及如何整合 asyncio 與 multiprocessing 兩個模組的方法,揭開它的神秘面紗!

Posted on  Jul 31, 2024  in  Python 程式設計 - 高階  by  Amo Chen  ‐ 5 min read

multiprocessing 模組進階篇 - Pipe, Queue, Array, RawArray 以及 Structure 之教學範例

用範例輕鬆學 Python multiprocessing 模組 一文中提到 4 種 IPC(Inter Process Communication)方法,分別是:

  • 以參數(args)的方式傳遞資料
  • 以共享記憶體(Shared Memory)中的 Value 物件傳遞資料
  • 以 fork 方式傳遞資料, fork 出來的子 process 會繼承父 process 的資源,所以可以存取原本父 process 內的資料
  • 透過 Manager 共享資料, Manager 會在一個稱為 server process 的 process 中管理共享的資料,並且代理其他 process 操作這些共享資料

除了上述幾種方式之外, Python 也有提供其他方式滿足開發者對於 IPC(Inter Process Communication) 的相關需求,本文將額外介紹 Pipe, Queue, Array, RawArray 4 種方式。

Posted on  Aug 7, 2023  in  Python 程式設計 - 中階  by  Amo Chen  ‐ 5 min read

Python multiprocessing 模組進階說明與範例

先前 Python multiprocessing 模組簡單說明與範例 一文簡述 multiprocessing 模組中 Pool, Manager 的使用方法,也講述如何在多個 Processes 之間共享資料,不過仍有許多關於 multiprocessing 中的功能尚未詳述,例如 Process 類別(class), Queue, Pipe 等等,這些功能不僅重要也很實用,是邁向 Python 高階功能的必學項目,因此不可忽視。

本文將透過實際範例了解更多關於 multiprocessing 模組中實用的功能。

Posted on  May 1, 2021  in  Python 程式設計 - 中階  by  Amo Chen  ‐ 11 min read

用範例輕鬆學 Python multiprocessing 模組

Python 內建的 multiprocessing 是相當重要的模組,如果有平行(parallelism)處理的需求,除了內建的 threading 模組之外,另一個就屬 multiprocessing 。

使用 multiprocessing 的好處在於能夠很大程度避開 Python GIL 對於程式效能的影響,但壞處則是對於記憶體的耗用程度也較高,即便如此也是一個必須了解的模組。

本篇將實際透過幾個範例學習如何使用 multiprocessing 模組。

Last updated on  Aug 8, 2023  in  Python 程式設計 - 初階  by  Amo Chen  ‐ 5 min read