3 回答
TA贡献1966条经验 获得超4个赞
就像@Greg Hewgill所说的那样,有很多理由说明为什么这并不总是可能的。但是,某些类型的代码(例如非常算法的代码)可以变成“真实的”机器代码。
有几种选择:
使用Psyco,它可以动态发出机器代码。不过,您应该仔细选择要转换的方法/函数。
使用Cython,这是一种类似 Python的语言,已编译为Python C扩展
使用PyPy,它具有从RPython(Python 的受限子集,不支持Python的某些最“动态”功能)到C或LLVM的转换器。
PyPy仍处于高度实验阶段
并非所有扩展名都存在
之后,您可以使用现有软件包之一(freeze,Py2exe,PyInstaller)将所有内容放入一个二进制文件中。
总而言之:您的问题没有一般性的答案。如果您具有对性能至关重要的Python代码,请尝试使用尽可能多的内置功能(或询问“如何使我的Python代码更快”问题)。如果那没有帮助,请尝试识别代码并将其移植到C(或Cython)并使用扩展名。
TA贡献1833条经验 获得超4个赞
PyPy是一个在Python中重新实现Python的项目,使用对本机代码的编译作为实现策略之一(其他方法是具有JIT的VM,使用JVM等)。他们的编译C版本平均比CPython运行慢,但对于某些程序则快得多。
Shedskin是一个实验性的Python到C ++编译器。
Pyrex是专门为编写Python扩展模块而设计的语言。它旨在弥合Python的精美,高级,易于使用的世界与C的混乱,低级的世界之间的鸿沟。
添加回答
举报