金源在线客服

在线咨询

QQ在线咨询

QQ咨询

01Jan

RPython、CPython、Cython的关系

在编程语法角度来说,Cython是CPython、PyPy实现的超集,就有点类似C++与C的关系。现在Python的pip仓库,只要涉及第三方的C扩展库,Cython语言实现的已经占有很大的比重。举个例子openpyxml这个扩展底层用到的lxml扩展,其实就是Cython语言实现的,还有像Numpy,Pandas和Scikit-learn这些基础的扩展也大量地使用了Cython。

有趣的是,众多Python实现中,可以用集合来表示RPython、CPython、Cython三者的关系,由于RPython走的路线是将CPython实现支持的所有动态语言特性加以限制,这些特性会给Python代码带来严重的性能问题。一切的出发点尽可能提升Python代码的性能.

而Cython所走的路线是兼容CPython的所有特性,尤其Cvthon要完全兼容CPython的CPext接口Cython编译的C扩展因此包含Python/C接口的实现细节,由此调用时会带来一定的性能开销。而RPython编译后的C程序则不存在这些代码开销。换句话说,绝大部分情况下,RPython会比Cython性能要高出许多的根本原因。这里没有提及PyPy是因为PyPy实现本身就由RPython实现编译后的产物(这是自托管型编程语言的特点,用Pvthon中间语言重新实现更优化的Pvthon实现)


上一篇:Python适合写算法和数据结构实现吗?
下一篇:现在为什么 Python 这么火?