我没有使用所有这些方法,尽管我曾在某一时刻对它们进行过调查......
Python C API:用于编写可编译为可在 Python 中导入的 Python 模块的 C 代码。或者用于编写充当“胶水”代码以与某些 C 库交互的 Python 模块。
scipy.weave:允许您将 C 代码位放入您的 python 代码中,如果您使用 NumPy 和 SciPy 进行数字工作,请查看此内容。C 代码将是一个字符串,例如 weave.inline('printf("%s", foo)')。
ctypes:一个 python 模块,允许您从 python 代码调用 C 代码。您基本上导入共享库,然后调用其 API。需要做一些工作来编组这些调用中的数据。如果您正在考虑使用您或其他人编写的现有 C 库,我将从这里开始。
pyrex/cython:允许您编写 Python 代码(使用一些特殊语法),这些代码将生成为 C 代码(可以作为 Python 模块导入),并且显然比通过 Python 解释器运行更快。这有点像“Python C API”路线,只是它为您生成 C 代码。如果你有一些代码块是你的瓶颈并且真的很慢,这很有用。使用 cython 重写该函数并从调用代码中导入它。
SWIG:为 C/C++ 库生成包装器代码。您应该最终得到一个可以导入和使用的 python 模块。
Boost.Python:这是我最不了解的一个。在我看来,它与 SWIG 类似,尽管您自己编写了包装层,但是在 Boost 宏/函数的帮助下。
Psyco:稍微加快你的 python 代码,我从来没有这么幸运过。我不会浪费你的时间。分析您的代码,找到您的瓶颈并使用上述技术之一加速它们。