5

ASTの形式で利用できるコードがあり、それを実行したいと思います。

私はこれを行うためのいくつかの方法を考えることができます、例えば:

  • 簡単に解釈してください。
  • それをPythonAST(astモジュール) に変換し、
    • Python-compileそれまたは
    • Python-evalそれ。
  • それをPythonソースコード(純粋な文字列など)に翻訳し、
    • Python-compileそれまたは
    • Python-evalそれ。
  • それを何らかの形の低レベルコードに変換し、それを実行するPythonで単純なVMを記述します。

私はそれをPythonASTに変換することで高速実行を取得し、compileそれを実行すると思います。Esp。PyPyを使用する場合、最適化をコンパイルするPyPys JITによって改善される可能性もあります(そうすることを願っていますか?)。

他の可能性を考えられますか?最善の方法について提案をいただけますか?

4

2 に答える 2

1

別の可能性: Cythonコードに変換し、ファイルに書き出し、Cythonでコンパイルしてから、最適化をオンにしたCコンパイラーで、結果のモジュールをロードして実行します。

コードにCython/C型に変換できる型注釈がある場合、これは非常に高速である可能性があります。ただし、Cythonはベータ版であり、まだ少し荒いので注意してください。また、このソリューションはCPythonでのみ機能します。

于 2011-07-08T16:02:56.523 に答える
0

別の可能性:ASTをPythonバイトコードに直接変換して実行します。これは、既存のPython VMを使用することを除けば、最後のアイデアと同じです。

大変な作業になる可能性があり、Pythonはかなり特殊な場合を除いておそらくより良い仕事をするので、それは大きな可能性ではありませんcompileが、私はそれをただ捨てています。

于 2011-07-08T16:25:56.980 に答える