跳到内容

赛马/赛马

欢迎来到Cython!

Cython是一个Python编译器,它使为Python编写C扩展和编写Python本身一样简单。Cython基于Pyrex,但支持更先进的功能和优化。

Cython将Python代码转换为C/C++代码,但还支持调用C函数以及在变量和类属性上声明C类型。这允许编译器从Cython代码生成非常高效的C代码。

这使得Cython成为包装外部C库和加速Python代码执行的快速C模块的理想语言。

Cython有约3000万次下载每月在PyPI上。你可以支持Cython项目通过Github赞助商潮汐升降.

安装:

如果您已经有C编译器,只需运行以下命令:

pip安装Cython

否则,请参见安装页面.

许可证:

最初的Pyrex程序是“无限制”许可的(见下文)。赛马本身是根据许可证获得许可的Apache许可证.

请参见许可证.txt.

贡献:

想为赛马项目做出贡献吗?这里有一些帮助您开始.

与其他Python编译器的区别

Cython在21世纪初开始作为一个项目,现在已经长生不老了大多数其他尝试为Python语言生成静态编译器。

今天具有相关性的类似项目包括:

  • 派比,带有JIT编译器的Python实现。
    • 优点:JIT编译,运行时优化,完全符合语言,与外部C/C++代码良好集成
    • 缺点:非CPython运行时,运行时的资源使用量相对较大,与CPython-扩展的兼容性有限,性能结果不明显
  • 努姆巴是一个Python扩展,它基于LLVM编译器基础设施(可能最著名的是它的叮当作响C编译器)。它主要针对使用NumPy的数字代码。
    • 优点:JIT编译与运行时优化
    • 缺点:有限的语言支持、相对较大的运行时依赖性(LLVM)、不明显的性能结果
  • Pythran公司是一个静态Python-to-C++扩展编译器,用于该语言的一个子集,主要针对数值计算。Pythran可以(而且可能是最好的)用作额外的NumPy代码的后端在赛马中。
  • mypyc公司,一个静态Python-to-C扩展编译器,基于梅比静态Python分析器。就像Cython的纯Python模式mypyc可以使用PEP-484类型注释来优化静态类型的代码。
    • 优点:很好地支持语言和PEP-484类型,良好的类型推断,合理的性能提升
    • 缺点:不支持低级优化和类型化,自以为是的Python类型解释,降低了Python的兼容性和编译后的自省
  • 努伊特卡,一个静态Python-to-C扩展编译器。
    • 优点:高度兼容语言,性能提高合理,支持静态应用程序链接(类似于cython_冻结但能够将库依赖项绑定到自包含的可执行文件中)
    • 缺点:不支持低级优化和键入

与上述相比,Cython提供了

  • 对几乎所有Python语言特性的快速、高效和高度兼容支持,包括动态特性和自省
  • 与所有仍在使用和未来版本的CPython完全兼容
  • “一次生成,到处编译”C代码生成,允许重复的性能结果和测试
  • C编译时适应目标平台和Python版本
  • 支持其他C-API实现,包括PyPy和Pyston
  • 与C/C++代码无缝集成
  • 广泛支持手动优化和调至C级
  • 拥有数千个库、包和工具的庞大用户群
  • 近二十年的错误修复和静态代码优化

获取完整的源历史记录:

请注意,Cython过去在其源代码发行版中提供完整的版本控制存储库,但由于空间限制,现在不再这样做了。要从下载的源代码存档中获取完整的源代码历史记录,请确保已安装git,然后进入Cython源代码分发的基本目录并键入:

进行回购

以下是Pyrex公司的产品:

这是Pyrex的开发版本,是一种用于编写Python扩展模块的语言。

有关更多信息,请查看:

  • Doc/About.html获取语言描述
  • INSTALL.txt获取安装说明
  • USAGE.txt了解用法说明
  • 使用示例演示

欢迎评论、建议、错误报告等!

版权材料:Pyrex没有任何限制。您可以使用、重新分发、修改和分发修改后的版本。

可以找到Pyrex的最新版本在这里.

Greg Ewing,计算机科学系
坎特伯雷大学
新西兰基督城

美国公司全资子公司新西兰公司公民。