15章並行性:スレッドとプロセス
プロセスとは、実行中のプログラムのインスタンスのことである。プロセスはOSによって他のプロセスから保護される。プロセスどうしをやり取りさせるには、プロセス間通信(IPC)メカニズムを使うか、ファイル(11章)、データベース(12章)、ネットワークインターフェイス(18章)を介してやり取りするように明示的に手配しなければならない。ファイルやデータベースといったデータストレージメカニズムを使ってプロセスを通信させる一般的な方法は、あるプロセスが書き込んだデータを、別のプロセスが読み戻すというものだ。本章では、プロセスを使ったプログラミングを取り上げる。これには、Pythonの標準ライブラリのモジュールsubprocess
およびmultiprocessing
、os
モジュールのプロセス関連の部分(パイプによる単純なIPCを含む)、メモリマップファイルと呼ばれるクロスプラットフォームのIPCメカニズム、そして 3.8+ multiprocessing.shared_memory
モジュールが含まれる。
スレッドとは、1つのプロセスの中で他のスレッドとグローバル状態(メモリ)を共有する制御フローのことである(当初は「軽量プロセス」と呼ばれていた)。すべてのスレッドが同時に実行されているように見えるが、実際には1つ以上のプロセッサ/コアを「交代で」使っているかもしれない。スレッドをマスターするのはそう簡単ではなく、マルチスレッドプログラムはテストやデバッグが難しいことが多い。ただし、この後の「threadingか、multiprocessingか、それとも非同期プログラミングか」で説明するように、マルチスレッドをうまく使うと、シングルスレッドのプログラミングよりもパフォーマンスがよくなることがある。本章では、 ...
Get Pythonクイックリファレンス 第4版 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.