9章multiprocessingモジュール
本章を読めば以下の問いに答えられるようになる
multiprocessing
モジュールは何を提供するのか?- プロセスとスレッドの違いは何か?
- プロセスプールの適切な選択方法は?
- プロセスを実行するための非永続型キュー(待ち行列)の使い方は?
- プロセス間通信の得失は何か?
- 複数のCPUを使って
numpy
のデータを処理する方法は? - データの欠損を回避するためにロックする必要があるのはなぜか?
デフォルトのCPythonは複数のCPUを使いません。その理由は、Pythonがシングルコアの時代に設計されたためでもあり、並列処理を効率的に実行するのがとても難しいためでもあります。複数のCPUを使うためのツールがありますが、どれを選ぶのかはユーザーしだいです。長時間実行するプロセスにおいて、マルチコアCPUのうちたったひとつのコアしか活用できないのは苦痛ですから、本章では同時に複数のコアを使う方法を説明します。
上記はCPython(ふだん使っているPythonの実装)についての話です。Python言語の仕様にはマルチコアの利用を妨げるものはありません。CPythonの実装はマルチコアを効率的に活用することはできませんが、他の実装(例えばPyPyがソフトウェア・トランザクショナル・メモリを使えるようになると)はこの制約に縛られません。 |
現在はマルチコアの時代です。ノートPCでも4コアはあたりまえで、デスクトップではまもなく8コアが一般的になるでしょう。サーバーでは10、12、15コアのCPUが利用可能です。それほど手間をかけずにマルチコアのCPU用にジョブを分割することができるのなら、そのような方向性で考えるのが得策です。 ...
Get ハイパフォーマンスPython now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.