Skip to content

相关工作

原文: http://docs.cython.org/en/latest/src/tutorial/related_work.html

Cython 最初基于 Pyrex Pyrex 这个编译器项目。 作为该项目的一部分,Cython 语言的许多功能和主要设计决策由 Greg Ewing 开发。今天,Cython 通过提供与 Python 代码和 Python 语义的更高兼容性,以及优秀的优化和与 NumPy 等科学 Python 扩展的更好集成,取代了 Pyrex 的功能。

ctypes [ctypes] 是 Python 的外部函数接口(FFI)。它提供 兼容C语言的数据类型,并允许调用动态链接库(DLL)或共享库中的函数。它可以被用于用纯 Python 代码包装这些库。与 Cython 相比,它具有主要优势在于可以在标准库中直接从 Python 代码中使用,而无需任何其他依赖项。主要缺点是它的性能受到 Python 调用开销的影响,因为所有操作必须首先通过 Python 代码。 Cython 作为一种编译语言,可以通过将更多功能和长时间运行的循环转换为更快的 C 代码来极大的避免此类开销。

SWIG [SWIG] 是一个包装器代码生成器。它使得解析 C / C ++头文件中的大型 API 定义变得非常容易,并为大量编程语言生成直接的包装器代码。然而,与 Cython 相反,它本身并不是一种编程语言。薄包装器很容易生成,但包装器需要提供的功能越多,使用 SWIG 实现它就越困难。另一方面,Cython 使得为 Python 语言编写非常精细的包装代码变得非常容易,并且可以根据需要在任何给定的位置使其变薄或变厚。此外,存在用于解析 C 头文件并使用它来生成 Cython 定义和模块骨架的第三方代码。

ShedSkin [ShedSkin] 是一个实验性的 Python-to-C ++编译器。它使用非常强大的「全模块类型推理引擎」从(受限制的)Python 源代码生成 C ++程序。主要缺点是它不支持为非原生(non-native)的操作调用 Python / C API,并且支持很少的标准 Python 模块。



回到顶部