October 2025
Intermediate to advanced
572 pages
7h 46m
Japanese
並行性(concurrency)とは、コンピュータがあたかもさまざまな処理を同時に行えるようにする仕組みです。例えば、CPUコアが1つしかないコンピュータにおいて、OSがその単一プロセッサ上で実行するプログラムを高速に切り替えています。この仕組みにより、各プログラムの実行が交互に行われて、プログラムが同時に動いているような錯覚を生み出しています。
並列性(parallelism)とは、コンピュータが実際にさまざまな処理を同時に行えるようにする仕組みです。CPUコアが複数あれば、プログラムを複数同時に実行できます。各CPUコアがそれぞれ異なるプログラムの命令を実行するので、複数のプログラムを同時に処理できます。
並行性は、単一プログラムにおける特定の問題を解決する有用なツールです。並行性を使えば、異なるI/Oストリームのような複数の独立した実行経路を持つプログラムを、見かけ上同時に独立して処理できます。
並行性と並列性の最も重要な違いはスピードアップです。プログラム内の2つの異なる実行経路を並列に処理する場合、作業全体にかかる時間は半分になり、実行速度は2倍になります。一方、並行処理は異なる実行経路が一見並列に動いているように見えても、実際の作業時間は短縮されません。
Pythonならばさまざまなスタイルで並行処理が書けます。例えば、スレッドならば小規模な並行処理、非同期コルーチンならば大規模な並行処理ができます。また、システムコール、サブプロセス、C言語拡張を介して並列処理もできます。しかし、Pythonで並列処理を本当に並列で実行するのは非常に難しいです。状況に応じてPythonを最適に活用する方法を理解することが大切です。
Read now
Unlock full access