我想让我的 Python 脚本在微控制器等裸机设备上运行,而不需要解释器。我知道已经有 Python 的 JIT 编译器(如 PyPy)和解释器(如 CPython)。
但是,我见过的现有解释器(例如 CPython)占用大量内存(MB 范围内)。
Python 是否有 AOT 编译器(即通过 LLVM 等中介直接编译到本机硬件)?
我认为这样的编译器将使 Python 比现有实现运行得更快,并且内存占用更低。如果有的话,我想知道为什么这个解决方案没有普及。
正如您已经提到的 Cython 是一个选项(但是,由于 C 运行时需要与您的程序一起实现 Python 功能,因此结果确实很大)。
关于 LLVM,Google 有一个名为 unladen Sweat 的项目。然而,该项目大部分已被放弃。您可以在这里找到一些相关信息
基本上,这是尝试将 LLVM 优化引入 Cython 的运行时。例如 JITTING Python 代码。
另一个旧的替代方案是 shed Skin,它将 Python 编译为 C++。有关它的一些信息可以在这里找到。
与脱皮类似的另一个选择是将自己限制在 Python 语言的子集并使用 micropython。
另一种方法是将 GraalVM 与 Truffle AOT 和 Python 结合使用。 它基本上是在针对 jvm 优化的 AOT 上运行的 Python。
该项目看起来很有前途。您可以在这里查看此链接:
https://www.graalvm.org/22.2/graalvm-as-a-platform/language-implementation-framework/AOT/
最近遇到了密码子,
Codon 是一个高性能的 Python 编译器,可以将 Python 代码编译为本机机器代码,而无需任何运行时开销。在单个线程上,Python 的典型加速速度约为 10-100 倍或更多。 Codon 的性能通常与 C/C++ 相当(有时甚至更好)。