CPythonでは、importは、pyファイルをpycファイルにコンパイルして現在のフレームでファイルを実行することを意味し、次にCPythonはpycファイルを再度コンパイルせずにロードします。 Ironpythonでのインポートはどうですか?私はironpythonはpycのようなフォーマットを持っていないと思う。インポートするたびにコンパイルされますか?ironpythonでモジュールをインポートするとどうなりますか?
答えて
はい、IronPythonは、実行ごとにインポートされたモジュールを再コンパイルします。実際には2倍。
複雑です。
最初のパスで、PythonコードがASTに解析され、ASTがDLR式ツリーに変換され、式ツリーが格納されます。実行するときは、単純なスタックベースのインタプリタのために式ツリーが一連の命令にコンパイルされ、そのインタープリタ上でモジュールコードが実行されます。走っていても速いわけではありませんが、スタートアップ時間はほとんどありません。
コードがしばらく実行された後、IronPythonは遅くなってしまい、式ツリーに戻り、コードを.NETデリゲートに再コンパイルします。つまり、.NET JITによってMSILとネイティブコードに変換されます。このコードは実行は高速ですが、作成に時間がかかります。
この変換は、関数単位(またはループ単位)単位で行われるため、モジュールの関数を繰り返し使用し、残りの関数を使用しない場合は、一般的に使用される関数の1つのみが完全なILコードジェネレーションとJITting。
ただし、このコンパイルはディスクに保存されません。 IronPythonに含まれるpyc.pyプログラムはコードをプリコンパイルできますが、実行時に生成されたコードがpyc.pyによって生成されたコードと異なるため、自動的には実行されません。 Pyc.pyによって生成されたコードは実行されませんが、ランタイムコードは通常収集可能です。実行時に収集できないコードを生成するとメモリリークが発生します。 pyc.pyは、いくつかのステップを保存することで、インポートを高速化する必要がありますが、どれくらいの量であるかは分かりません。
ありがとうございます! – zchenah
- 1. ホワイトプロジェクトをIronPythonプログラムにインポートするにはどうすればよいですか?
- 2. TypeScriptでインポートすると「モジュールが見つかりません」
- 3. ironpythonでmysqlデータをインポートするには
- 4. IronPythonスクリプトでDLRCachedCodeクラスをインポートする
- 5. numpyをインポートした後、ironpythonでnltkをインポートできない
- 6. OctoberCMSで一部のモジュールを無効にするとどうなりますか?
- 7. IronPythonの下でモジュールを卵としてインストールするには?
- 8. scipyでモジュールをインポートすると何が問題になりますか?それはバグですか?
- 9. インポートされたモジュールは、関数を実行するとNoneになります。
- 10. C#のタイプをIronPythonにインポートできないのはなぜですか?
- 11. Foldableクラスをモジュールにインポートするにはどうすればよいですか?
- 12. モジュール(ライブラリ)をPythonプロジェクトにインポートする便利な方法はありますか?
- 13. IronPythonでdatetimeモジュールを使用するにはどうすればよいですか?
- 14. フラスコの設定値を循環インポートなしでモジュールにインポートすることはできますか?
- 15. IronPythonインポート済みDLLの名前空間を設定するにはどうすればよいですか?
- 16. モジュール名にダッシュやハイフンがある場合、モジュールをインポートするにはどうすればいいですか?
- 17. Python/Django:モジュールを使用する直前にモジュールをインポートすると、循環インポートができなくなるのはなぜですか?
- 18. 親モジュールと子モジュールのインポート
- 19. 補足的なJavascriptソースをインポートするTypeScriptモジュールをコンパイルするにはどうすればよいですか?
- 20. なぜPythonモジュールをインポートしても、ネストされたモジュールをインポートできないのですか?
- 21. Pythonはどのように.eggファイルからモジュールをインポートしますか?
- 22. 外部モジュールから外部変数と関数をインポートするにはどうすればいいですか?
- 23. SublimeText2でPythonモジュールをインポートしようとすると、ImportErrorが発生する
- 24. モジュールをインポートするときに外部モジュールを非表示にする(コード補完など)
- 25. 組み込みモジュールと同じ名前のモジュールをインポートしようとすると、インポートエラーが発生します
- 26. オプションで、公開パッケージにモジュールをインポートすることはできますか?
- 27. python標準ライブラリから特定のモジュールをインポートすると、メモリとパフォーマンスにどのような影響がありますか?
- 28. Pythonのパッケージからモジュールをインポートするなどの基本的な問題があります。答えは見つからないと思います。
- 29. なぜ "インポート"と "インポート*"に違いがありますか?
- 30. 古いモジュールと同じモジュールをインポートする方法
まだ誰も答えませんか?それは私自身に答える必要があるようです... – zchenah