Python 的 AoT 编译器

问题描述 投票:0回答:3

我想让我的 Python 脚本在微控制器等裸机设备上运行,而不需要解释器。我知道已经有 Python 的 JIT 编译器(如 PyPy)和解释器(如 CPython)。

但是,我见过的现有解释器(例如 CPython)占用大量内存(MB 范围内)。

Python 是否有 AOT 编译器(即通过 LLVM 等中介直接编译到本机硬件)?

我认为这样的编译器将使 Python 比现有实现运行得更快,并且内存占用更低。如果有的话,我想知道为什么这个解决方案没有普及。

python llvm
3个回答
7
投票

正如您已经提到的 Cython 是一个选项(但是,由于 C 运行时需要与您的程序一起实现 Python 功能,因此结果确实很大)。

关于 LLVM,Google 有一个名为 unladen Sweat 的项目。然而,该项目大部分已被放弃。您可以在这里找到一些相关信息

基本上,这是尝试将 LLVM 优化引入 Cython 的运行时。例如 JITTING Python 代码。

另一个旧的替代方案是 shed Skin,它将 Python 编译为 C++。有关它的一些信息可以在这里找到。

与脱皮类似的另一个选择是将自己限制在 Python 语言的子集并使用 micropython


3
投票

另一种方法是将 GraalVM 与 Truffle AOT 和 Python 结合使用。 它基本上是在针对 jvm 优化的 AOT 上运行的 Python。

该项目看起来很有前途。您可以在这里查看此链接:

https://www.graalvm.org/22.2/graalvm-as-a-platform/language-implementation-framework/AOT/


2
投票

最近遇到了密码子

Codon 是一个高性能的 Python 编译器,可以将 Python 代码编译为本机机器代码,而无需任何运行时开销。在单个线程上,Python 的典型加速速度约为 10-100 倍或更多。 Codon 的性能通常与 C/C++ 相当(有时甚至更好)。

© www.soinside.com 2019 - 2024. All rights reserved.