【要約】Pythonのマルチプロセッシングについてまとめてみた [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
- ・PythonのGILによるマルチスレッドの限界。
- ・プロセス間でのメモリ空間の分離。
- ・プロセス間通信(IPC)の必要性とコスト。
- ・リソース(CPU/メモリ)の無制限な消費。
// Approach
1.
Processクラスによる子プロセスの生成。2.
Pipeを用いた双方向通信。send()とrecv()を利用。3.
sharedctypesによる共有メモリの構築。ValueやArrayを使用。4.
Poolクラスによるプロセスプールの管理。map()によるタスク分散。// Result
- ・独立したメモリコンテキストの確保。
- ・
Pipeによる任意のオブジェクトの転送。 - ・
Value/Arrayによる低レイテンシなデータ共有。 - ・
Poolによるリソース使用率の制御と効率的な並列実行。
Senior Engineer Insight
> GIL回避には不可欠な技術だ。ただし、IPCのオーバーヘッドに注意せよ。
Pipeはシリアライズ負荷が高い。大量の小規模データを送ると、逆に遅延する。sharedctypesは高速だが、同期制御が肝となる。Poolによるリソース制限は、本番環境の安定稼働において必須の設計である。