Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 並行処理の概要 | Multithreading vs. Multiprocessing
Python構造化プログラミング

並行処理の概要

メニューを表示するにはスワイプしてください

並行性(Concurrency)と並列性(Parallelism)はしばしば同じ意味で使われますが、複数のタスクを処理するための異なるアプローチを指します。並行性は、プログラムが複数のタスクを同時に管理できる能力を意味しますが、必ずしも同時に実行されるわけではありません。代わりに、タスクは同じリソース(例:単一のCPUコア)を素早く切り替えながら順番に利用します。これは、ファイルやネットワーク接続からの読み取りなど、入出力(I/O)操作を待つ時間が多いプログラムに特に有効です。

並列性は、複数のタスクをまさに同時に実行することを意味します。これは複数のCPUコアが利用可能な場合に可能となり、タスクが本当に並列に実行されます。並列性は、複雑な計算処理のようなCPUバウンドタスクにとって特に重要です。

CPUバウンドタスクとI/Oバウンドタスクの違いを理解することで、適切なアプローチを選択できます。CPUバウンドタスクは計算速度に制限され、I/Oバウンドタスクはディスクアクセスやネットワーク応答など外部操作の完了を待つ時間が多くなります。Pythonでは、並行性はスレッドを使って実装されることが多く、スレッドは軽量でI/Oバウンドタスクに適しています。CPUバウンドタスクには、個別のプロセスを使うマルチプロセッシングがより効果的です。これは、PythonのスレッドがGlobal Interpreter Lock (GIL)によって制限されるためです。

動画で見たように、並行性と並列性のどちらを選ぶかはプログラムのワークロードの性質によります。タスクがI/O待ちの場合はスレッドによる並行性が効率を高め、計算量が多い場合は複数プロセスによる並列性がハードウェアを最大限に活用できます。

question mark

Pythonにおける並行性と並列性の違いを最もよく表しているのはどの説明ですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  1

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  1
some-alt