9章multiprocessingモジュール
9章を読めば以下の問いに答えられるようになる
multiprocessing
モジュールは何を提供するのか?- プロセスとスレッドの違いは何か?
- プロセスプールの適切な選択方法は?
- プロセスを実行するための非永続型キュー(待ち行列)の使い方は?
- プロセス間通信の得失は何か?
- 複数のCPUを使って
NumPy
のデータを処理する方法は? - Joblibを使って、並列化されキャッシュされた科学的な計算を簡単にする方法は?
- データの欠損を回避するためにロックする必要があるのはなぜか?
デフォルトのCPythonは複数のCPUを使いません。その理由は、Pythonがシングルコアの時代に設計されたためでもあり、並列処理を効率的に実行するのがとても難しいためでもあります。複数のCPUを使うためのツールがありますが、どれを選ぶのかはユーザーしだいです。長時間実行するプロセスにおいて、マルチコアCPUのうちたった1つのコアしか活用できないのはもったいないので、本章では同時に複数のコアを使う方法を説明します。
上記はふだん使っているPythonの実装であるCPythonについての話です。Pythonの仕様には、マルチコアの利用を妨げるものはありません。CPythonの実装はマルチコアを効率的に活用できませんが、将来的にはできるようになるかもしれません。 |
現在はマルチコアの時代です。ノートPCでも4コアはあたりまえで、デスクトップでは32コアも利用できます。それほど手間をかけずにマルチコアのCPU用にジョブを分割できるのなら、そのような方向性で考えるのが得策です。 ...
Get ハイパフォーマンスPython 第2版 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.