欢迎来到赛通!
Cython 是一个 Python 编译器,它使为 Python 编写 C 扩展就像 Python 本身一样简单。 Cython 基于 Pyrex,但支持更多前沿功能和优化。
Cython 将 Python 代码转换为 C/C++ 代码,但还支持调用 C 函数以及在变量和类属性上声明 C 类型。这允许编译器从 Cython 代码生成非常高效的 C 代码。
这使得 Cython 成为包装外部 C 库以及加速 Python 代码执行的快速 C 模块的理想语言。
- 官方网站:https://cython.org/
- 文档:https://docs.cython.org/
- Github 存储库:https://github.com/cython/cython
- 维基:https://github.com/cython/cython/wiki
Cython 在 PyPI 上每月的下载量约为 3000 万次。您可以通过 Github Sponsors 或 Tidelift支持 Cython 项目。
安装:
如果您已经有 C 编译器,只需运行以下命令:
pip 安装 Cython
否则,请参阅安装页面。
执照:
最初的 Pyrex 程序获得“无限制”许可(见下文)。 Cython 本身是根据宽松的Apache License获得许可的。
请参阅 LICENSE.txt。
贡献:
想为 Cython 项目做出贡献吗?这里有一些帮助您入门的帮助。
与其他 Python 编译器的差异
Cython 作为一个于 2000 年代初开始的项目,比大多数其他为 Python 语言生成静态编译器的尝试都更长久。
当今具有相关性的类似项目包括:
- PyPy,带有 JIT 编译器的 Python 实现。
- 优点:具有运行时优化的 JIT 编译、完全语言兼容、与外部 C/C++ 代码良好集成
- 缺点:非CPython运行时,运行时资源占用较大,与CPython扩展的兼容性有限,性能结果不明显
- Numba,一个 Python 扩展,具有针对该语言子集的 JIT 编译器,基于 LLVM 编译器基础架构(可能以其
clang
C 编译器而闻名)。它主要针对使用 NumPy 的数字代码。- 优点:具有运行时优化的 JIT 编译
- 缺点:语言支持有限,运行时依赖性(LLVM)相对较大,性能结果不明显
- Pythran,一个用于该语言子集的静态 Python 到 C++ 扩展编译器,主要针对数值计算。 Pythran 可以(并且可能是最好的)用作 Cython 中 NumPy 代码的附加后端。
- mypyc,一个静态 Python 到 C 的扩展编译器,基于 mypy 静态 Python 分析器。与 Cython 的纯 Python 模式一样,mypyc 可以利用 PEP-484 类型注释来优化静态类型的代码。
- 优点:对语言和 PEP-484 类型的良好支持、良好的类型推断、合理的性能提升
- 缺点:不支持低级优化和类型、固执己见的 Python 类型解释、降低 Python 兼容性和编译后自省
- Nuitka,一个静态的 Python 到 C 扩展编译器。
- 优点:高度语言兼容、合理的性能提升、支持静态应用程序链接(类似于 cython_freeze 但能够将库依赖项捆绑到独立的可执行文件中)
- 缺点:不支持低级优化和打字
与上述相比,Cython 提供了
- 快速、高效且高度兼容地支持几乎所有 Python 语言功能,包括动态功能和内省
- 与所有仍在使用和未来版本的 CPython 完全运行时兼容
- “生成一次,到处编译”C 代码生成,允许可重现的性能结果和测试
- C编译时适应目标平台和Python版本
- 支持其他 C-API 实现,包括 PyPy 和 Pyston
- 与C/C++代码无缝集成
- 对手动优化和调整至 C 级别的广泛支持
- 拥有数千个库、包和工具的庞大用户群
- 近二十年的错误修复和静态代码优化
获取完整的源历史记录:
请注意,Cython 曾经在其源代码发行版中提供完整的版本控制存储库,但由于空间限制而不再这样做。要从下载的源存档中获取完整的源历史记录,请确保已安装 git,然后进入 Cython 源发行版的基本目录并输入:
制作回购协议
以下内容来自 Pyrex:
这是 Pyrex 的开发版本,Pyrex 是一种用于编写 Python 扩展模块的语言。
欲了解更多信息,请查看:
- Doc/About.html 有关该语言的描述
- INSTALL.txt 安装说明
- USAGE.txt 用于使用说明
- 使用示例演示
欢迎提出意见、建议、错误报告等!
版权问题:Pyrex 不受限制。您可以使用、重新分发、修改和分发修改后的版本。
可以在此处找到最新版本的 Pyrex。
Greg Ewing,计算机科学系
坎特伯雷大学
新西兰基督城
NewZealandCorp 的公民,NewZealandCorp 是 USA Inc. 的全资子公司。