Pythonはインタープリター型言語なので、.pycコンパイルファイルとは何ですか?


ベストアンサー

Pythonはインタープリター型です。人間が読める形式のソースをバイトコードに変換し、それを.pycファイルに保存し、.pycファイルは移植可能ですが、それでも.pycファイルは解釈されます。たとえば、一部のPythonインタプリタは、一般的に使用される整数-100〜100のシングルトンオブジェクトをキャッシュします。キャッシュしないものもあります。どのように重要ですか?

システムは、Object.id()をTrueまたはFalseとして比較するis操作を合法的に解釈できます。

x = 20

x is 20 # Both True and False are valid results.

デモ:

$ python3

Python 3.6.3 (default, Oct 3 2017, 21:45:48)

[GCC 7.2.0] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> x = 30

>>> x is 30

True

>>> x = 23442.2

>>> x is 23442.2

False

>>>

変換Pythonのソースからバイトコードへの変換には時間がかかります。Pythonが.pycファイルを読み取る方が、ソースを読み取って.pycを再構築するよりも合理的に高速です。

時間がありましたが、私は追いついてきませんでした。モジュールをインポートする場合、Pythonがモジュールをロードするためにディレクトリで\_\_init\_\_。pyを検索する場合。その\_\_init\_\_。pyファイルを小さくして、ほとんどの場合、.pycファイルに存在する有用なコードを二次的にインポートするのが賢明でした。

そして、Pythonの最適化はどこにでも行きましたか?最後に知ったのは、かなり前のことですが、.pyoはコメントが削除された.pycでした。

回答

これまでに回答しました:QuildreenMottaの回答Pythonのような高級言語をコンパイルして、Cと同じくらい高速にすることはできますか?

しかし、要するに、人々はCやC ++を使用しないのは、それらが高速、ある程度予測可能なパフォーマンスがあるため、これらを使用します。その後、プログラマーは時間をかけてプログラムを手動で最適化し、これらの最適化の結果として得られるパフォーマンスについて推論するのははるかに簡単です。

Pythonのような動的言語で行うのはそれほど簡単ではありません。それでも、PyPyは-よりも高速になります。いくつかのシナリオでのC(gcc、完全に手動で最適化されていない)パフォーマンス。いくつかの要因(プログラムを通過するデータ、取得されたブランチ、安定性)に依存するため、これらのシナリオがいつ発生するかを予測することはできません。 t上の分岐ime、コードの辛さなど)。

もちろん、PyPyはプログラムの実行中にすべての最適化を行うため、多くのコストの重み付けを行う必要があり、一部の最適化は適用されません。そのための。 AOTコンパイラがコードを分析して本当に高速なコードを生成するのに3か月かかるのと同じように、JITオプティマイザーはコードの分析に数分を費やす可能性があります。どちらの場合も、コストが報われる可能性が高いため、そうはなりません。

Pythonは動的言語であるため、Python用のAOTコンパイラを実行することははるかに困難です。

shedskin-実験的な(制限付きPython)からC ++へのコンパイラ。静的に分析できるように、代わりにPythonの制限付きサブセットを使用します。このアプローチは、 PyPyのベースとなっているRPythonによって取得されたもの。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です