在Python中快速动态代码执行的可能性

Alb*_*ert 5 python scripting jit abstract-syntax-tree vm-implementation

我在某种形式的AST中有一些代码,我想执行它.

我可以想到几种方法,例如:

  • 只是直截了当地解释它.
  • 将其转换为Python AST(ast模块)和
    • Python- compile那或
    • Python- eval那.
  • 将其转换为Python源代码(例如纯字符串)和
    • Python- compile那或
    • Python- eval那.
  • 以某种形式的低级代码翻译它,并在Python中编写一个简单的VM来运行它.

我想我会通过将它转换为Python AST来获得禁食执行compile,然后运行它.ESP.当使用PyPy时,我甚至可能通过PyPys JIT编译优化得到改进(我希望我这样做,是吗?).

你能想到其他可能性吗?你能就什么是最好的方式提出建议吗?

kin*_*all 0

另一种可能性:将 AST 直接翻译为 Python 字节码并执行。除了使用现有的 Python VM 之外,这就像您的最后一个想法。

这不是一个很大的可能性,因为它可能需要大量工作,而且 Pythoncompile可能会做得更好,除非在相当特殊的情况下,但我只是把它扔在那里。