---
# System prepended metadata

title: Multiprocessing
tags: [IPC]

---

Multiprocessing
===

* Pool 提供同時多個平行處理的 Processes 數，例如 Pool\(4\) 則代表會有 4 個平行處理的 Processes 。
* Exchanging objects
  * Queues
  * Pipes
* Shared memory
  * 兩種方式：Data can be stored in a shared memory map using **`Value`** or **`Array`**
* Synchronization機制 使用`lock`確保一次只能有一個process對共享資料存取，否則，若同時多個processes對同一個共享的資料寫入，會造成資料混淆。
* Manager 提供一種可以在不同processes之間共享的數據的方法。 相比Shared memory的方式更彈性，支援更多類型：A manager returned by `Manager()` will support types `list`, `dict`, `Namespace`, `Lock`, `RLock`, `Semaphore`, `BoundedSemaphore`, `Condition`, `Event`, `Barrier`, `Queue`, `Value` and `Array`其中也已包含Synchronization機制。 

# Ref.

[多进程](https://www.liaoxuefeng.com/wiki/897692888725344/923056295693632)

[multiprocessing — Process-based parallelism (en)](https://docs.python.org/3/library/multiprocessing.html\#module-multiprocessing)

[multiprocessing --- 基于进程的并行 (ch)](https://docs.python.org/zh-tw/3/library/multiprocessing.html)

[https://www.maxlist.xyz/2020/03/20/multi-processing-pool/](https://www.maxlist.xyz/2020/03/20/multi-processing-pool/)





###### tags: `IPC`