Python编译器

15

我对Python有几个疑问

  1. 为什么没有Python编译器可以创建本地代码?我发现了py2exe等工具,但它们只是将Python解释器打包在一起,因此依然需要解释器来执行代码。

  2. 是否无法像LISP编译器那样创建Python编译器,从而使代码执行更快(与C ++相比)?

谢谢, Vinay


3
你可能会觉得这个问题很有趣:https://dev59.com/BHVC5IYBdhLWcg3w9GA9 - charlax
6个回答

17

Nuitka - Python编译器

它是什么

我想使用一种比CPython自带字节码更好的编译器来编写Python,这就是Nuitka的目的。

Nuitka是我的努力,将纯Python代码翻译成机器码(通过C++编译器),同时在运行时使用libpython。然后进行编译时和运行时分析,如果满足某些预期,则以更快的模式进行推测性执行。


1
谢谢。这是我花了相当长时间搜索后第一次听到,看起来非常有趣。这正是我一直在寻找的.. :) 我还没有检查它是如何工作的。 - Vinay

9

问题1:

  • Nuitka(将Python代码直接转换为C++)
  • ShedSkin(将隐式静态类型的Python编译成C++,独立程序或扩展模块)
  • Cython(从Python的超集到C扩展。Cython来自于Pyrex

问题2:
不确定我是否理解正确,但也许答案是:

  • psyco(Python代码的即时编译器(JIT),PyPy JIT的前身)

2

Numba是一种基于NumPy和LLVM的新型Python编译器,如果必要会退回到CPython。


2

2

有一个东西,有点像。

  1. 看看Cython——我还没有完全探索它的功能,但是据我所知,它可以直接编译Python代码。您还可以使用(可选)静态类型——它不再是原始的Python代码,但如果正确使用,可以实现速度提升。此外,请查看以下内容:Can Cython compile to an EXE?

  2. 这可能是因为我对Lisp没有太多经验,但我并不完全明白您所说的'创建类似Lisp编译器的Python编译器'意味着什么。


我在某处读到过有一个LISP编译器,而且LISP程序的性能与C++相当。我错了吗?LISP编译器能创建本地可执行文件吗? - Vinay
啊,我误解了你最初的问题。是的,一些Lisp编译器可以创建本地可执行文件。Cython(我上面提供了链接)几乎做同样的事情。 - Michael0x2a

0

LPython:小说、快速、可重定向的Python编译器。

Taichi:在Python中进行高效、可移植的高性能编程。

Codon:使用LLVM的高性能、零开销、可扩展的Python编译器。

Mojo:Mojo将Python的易用性与C的性能相结合,实现了AI硬件的无与伦比的可编程性和AI模型的可扩展性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接