#1 常见的 Python 性能提升手段
Python Cython 2021-06-21Python 本身的性能现在还很有待提升,但是为什么没有阻碍它的推广呢?
因为 Python 常常被当作是一种胶水语言,它有很好的与 C 互操作性,一直维护与 C 库对接的 API,也就是说很容易可以通过 C 拓展来提升性能。
新的运行时
PyPy
据说能有很大提升Pyston
LLVM 编译器架构 + JIT
https://github.com/pyston/pyston
注意:Dropbox 放弃了这个项目,转向 Go 语言,但这个项目还在继续开发中, 比较活跃Psyco
http://psyco.sourceforge.net/ 已经没有维护了,据说只维护到 Python 2.4
官方推荐 PyPy
局部优化
Pyrex
编译成 C 模块Cython
Pyrex 的分支, 更加接近 Python 语法一些Numba
https://github.com/numba/numbaNuitka
尝试将 Python 代码编译成 C/C++
https://github.com/Nuitka/NuitkaParakeet
https://github.com/iskandr/parakeet 项目没有维护了Shedskin
https://github.com/shedskin/shedskin 现在少有维护了
C/C++ 绑定
SWIG
: C/C++ 写的代码自动绑定到 Python,就是说生成一个 Python 可以调用的 .so 模块pybind11
Boost.Python
直接调用 C
直接开发 CPython 拓展模块(include <Python.h>
)也可以,但我不觉得这是一个好办法。
ctypes
Python 标准库- llvmpy/llvmpy
- CorePy2
- Weave
- PyInline
GPU
- GPULib
- PyStream
- PyCUDA
- PyOpenCL
其他
- F2PY: Fortran to Python, 将 Fortran 代码自动绑定到 Python, NumPy 的一部分
也是编译成 .so 包
我不清楚相关应用场景,以及这个方案是否有性能上的优势