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.