7章並行性と並列性
並行性によって、コンピュータは多数の異なることを見かけ上同じ時間に行うことができます。例えば、シングルコアCPUのコンピュータで、オペレーティングシステムは、単一プロセッサ上で実行するプログラムを忙しく切り替えています。これはプログラム実行をインターリーブすることによって、複数のプログラムが同時に実行されている印象を与えます。
対照的に、並列性は多数の異なることを実際に同じ時間に行います。マルチコアCPUを持つコンピュータは、複数のプログラムを同時に実行できます。各CPUコアが、別々のプログラムの命令を実行し、各プログラムが同時に進行します。
単一プログラムの内部では、並行性は、プログラマがある種の問題を解きやすくするツールです。並行プログラムは、別々のI/Oストリームを含めて実行上の多くの異なる経路を、見かけ上は同時かつ独立に進行できるようにします。
並列性と並行性の決定的な違いは速度向上です。プログラムで2つの異なる実行経路が並列に進行するなら、全体の作業をやり遂げるための時間は半減されます。実行速度は2倍になります。対照的に、並行プログラムでは、実行の何千もの経路を見かけ上並列に実行しても、作業全体ではスピードアップしません。
Pythonでは複数のスタイルの並行処理プログラミングを簡単に書くことができます。スレッドは、比較的小さな並行性をサポートし、コルーチンは大量の並行関数の処理が行えます。Pythonは、システムコール、サブプロセス、C拡張によって並列作業をするのにも使えます。しかし、並行Pythonコードを、本当に並列に実行することは非常に難しい場合があります。このような困難な状況において、Pythonをどのように使うのが最良かを理解することが重要です。 ...
Get Effective Python 第2版 ―Pythonプログラムを改良する90項目 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.