#1 常见的 Python 性能提升手段

2021-06-21

Python 本身的性能现在还很有待提升,但是为什么没有阻碍它的推广呢?

因为 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

局部优化

C/C++ 绑定

  • SWIG: C/C++ 写的代码自动绑定到 Python,就是说生成一个 Python 可以调用的 .so 模块
  • pybind11
  • Boost.Python

直接调用 C

直接开发 CPython 拓展模块(include <Python.h>)也可以,但我不觉得这是一个好办法。

GPU

  • GPULib
  • PyStream
  • PyCUDA
  • PyOpenCL

其他

  • F2PY: Fortran to Python, 将 Fortran 代码自动绑定到 Python, NumPy 的一部分
    也是编译成 .so 包
    我不清楚相关应用场景,以及这个方案是否有性能上的优势

参考资料与拓展阅读