15章データと時間:プロセスと並行処理

ほとんどの人間ができないけれどもコンピュータならばできること。

段ボール箱の中に閉じ込められて倉庫でじっとしていることなどがそうだ。

──ジャック・ハンディー

 ここから3つの章は今までの章よりも少し難しくなる。この章ではデータと時間の問題(逐次アクセスか並行アクセスか)を扱う。16章ではデータと格納場所の問題(特殊ファイル、データベースの読み書き)、17章ではデータと移動の問題(ネットワーク)を扱う。

15.1 プログラムとプロセス

 個別のプログラムを実行すると、オペレーティングシステムはプロセスを1つ作る。プロセスはシステムリソース(CPU、メモリ、ディスクスペース)とOSのカーネルのデータ構造(ファイル、ネットワーク接続、利用統計など)を使う。プロセスはほかのプロセスからは切り離されている。ほかのプロセスが何をしているのかを覗いたり、ほかのプロセスの作業を邪魔したりすることはできない。

 オペレーティングシステムは、実行されているすべてのプロセスを管理しており、それぞれに少しずつ実行時間を与えては、ほかのプロセスに移っていく。これは、すべてのプロセスに公平に処理の機会を与え、ユーザに対して機敏に反応するという2つの目的のためだ。プロセスの状態は、macOSのアクティビティモニタやWindowsのタスクマネージャ、Linuxのtopコマンドなどのグラフィカルインタフェースで表示できる。

 プロセスデータにはプログラム自身からもアクセスできる。標準ライブラリのosモジュールは、システム情報にアクセスするための方法を提供している。たとえば、次の関数は、実行されているPythonインタプリタのプロセスIDカレントディレクトリ ...

Get 入門 Python 3 第2版 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.