並行処理の概要
メニューを表示するにはスワイプしてください
並行性(Concurrency)と並列性(Parallelism)はしばしば同じ意味で使われますが、複数のタスクを処理するための異なるアプローチを指します。並行性は、プログラムが複数のタスクを同時に管理できる能力を意味しますが、必ずしも同時に実行されるわけではありません。代わりに、タスクは同じリソース(例:単一のCPUコア)を素早く切り替えながら順番に利用します。これは、ファイルやネットワーク接続からの読み取りなど、入出力(I/O)操作を待つ時間が多いプログラムに特に有効です。
並列性は、複数のタスクをまさに同時に実行することを意味します。これは複数のCPUコアが利用可能な場合に可能となり、タスクが本当に並列に実行されます。並列性は、複雑な計算処理のようなCPUバウンドタスクにとって特に重要です。
CPUバウンドタスクとI/Oバウンドタスクの違いを理解することで、適切なアプローチを選択できます。CPUバウンドタスクは計算速度に制限され、I/Oバウンドタスクはディスクアクセスやネットワーク応答など外部操作の完了を待つ時間が多くなります。Pythonでは、並行性はスレッドを使って実装されることが多く、スレッドは軽量でI/Oバウンドタスクに適しています。CPUバウンドタスクには、個別のプロセスを使うマルチプロセッシングがより効果的です。これは、PythonのスレッドがGlobal Interpreter Lock (GIL)によって制限されるためです。
動画で見たように、並行性と並列性のどちらを選ぶかはプログラムのワークロードの性質によります。タスクがI/O待ちの場合はスレッドによる並行性が効率を高め、計算量が多い場合は複数プロセスによる並列性がハードウェアを最大限に活用できます。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください