PythonのGILを理解しようとしています。私は最近、複数の入力ファイルで異なる時間計算量の異なるアルゴリズムを使用して実行された特定のタスクの実行時間を比較しなければならないという課題を抱えていました。私は同じことをするために python スクリプトを実行しましたが、macOS で別々のターミナル ウィンドウを使用して、異なる入力ファイルに対して同じ python スクリプトを実行しました。
また、入力ファイルごとに 1 つの端末ウィンドウですべてを順番に実行しました。このためのCPU時間は、各プログラムが2倍の時間がかかったが、一度に実行された複数のウィンドウを使用した以前のアプローチと比較して、実行ごとに短くなりました。(注: 前のアプローチには 4 つのターミナル ウィンドウがあり、Python スクリプトは macOS で clang でコンパイルされた a.out 実行可能ファイルのみを実行し、出力を異なるファイルに保存しました)。
それらを並行して実行すると、各プログラムが遅くなる理由を説明できる人はいますか? それらは別々のコアで実行されたのでしょうか、それとも GIL によって各プログラムは、1 つの端末ウィンドウで一度に 1 つずつ実行した場合よりも遅くなりましたか?
各ターミナル ウィンドウは、それぞれ独自の GIL を持つ新しい Python インタープリターを開始します。この違いは、おそらく OS レベルのリソース (ディスク i/o、メモリ、CPU サイクル) の競合によるものです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加