Pythonスクリプトの実行時に生成された_pycache__フォルダ


・はじめに
pythonでプロジェクトを作成し、最初の実行後、プロジェクトルートディレクトリの下に__が生成されていることがわかります.pycache__フォルダ、中身はpyファイルと同名の各種*.pycまたは*.pyoファイル.
まずpythonの基本的な動作メカニズムについて概説します.Pythonプログラムの実行時にバイナリコードにコンパイルする必要はなく、直接ソースコードからプログラムを実行します.簡単に言えば、Python解釈器はソースコードをバイトコードに変換し、解釈器によってこれらのバイトコードを実行します.
インタプリタの具体的な作業:
1モジュールのロードとリンクを完了します.
2ソースコードをPyCodeObjectオブジェクト(バイトコード)にコンパイルし、メモリに書き込み、CPUが読み取る.
3メモリから読み出す実行し、終了後にPyCodeObjectをハードディスクに書き込み、つまりコピーする.pycまたは.pyoファイルで、現在のディレクトリのすべてのスクリプトのバイトコードファイルを保存します.
*その後、スクリプトを再度実行する場合は、「ローカルに上記のバイトコードファイルがあるかどうか」と「バイトコードファイルの修正時間がスクリプトと一致しているかどうか」を確認します.はい、直接実行します.そうしないと、上記の手順を繰り返します.
以下はstackoverflowからの回答を参照します.
・なぜ出てくるのか_pycache__フォルダ?
pythonインタプリタは*.pyスクリプトファイルはコンパイルされ、コンパイル結果は__pycache__ディレクトリに保存されます.
次に工事を実行するとき、解釈器がこれを発見すると*pyスクリプトは修正されていないので、コンパイルをスキップし、以前に生成した__pycache__フォルダに保存されている*を直接実行します.pycファイル.
このように工事が大きい場合、プロジェクトの運行前の準備時間を大幅に短縮することができる.小さなプロジェクトを実行するだけなら、このフォルダを無視してもいいです.
・いつ現れるか_pycache__フォルダ?
プロジェクトディレクトリの下には_があります.main__.pyファイル、および呼び出す他のモジュールの場合.現在実行されているスクリプト「_main_」のみの場合、_は生成されませんpycache__の双曲線コサインを返します.
・使い方_pycache__フォルダは表示されませんか?
シングル:スクリプト実行時に-Bパラメータを追加python -B foo.py
永久:環境変数PYTHONDONTWRITEBYTECODE=1を設定する
添付:このフォルダはPython 3に表示されます.2以降のバージョンでは、Python 2の下のコンパイルファイルとソースファイルを同じディレクトリに配置します.