使用扩展类型(cdef)和设置纯python代码有什么区别?



请注意,我是C语言的新手。根据Cython的基本教程,我认为使用Cython有两种方法:构建纯Python代码的扩展,以及使用Ctype变量(cdef(。

我不明白的是他们之间的区别。其中哪一种是使用Cython更有效或更正确的方法?

它主要是历史性的。

  • Cython最初只支持cdef声明
  • 添加纯Python模式是为了在不需要Cython的情况下,将声明添加到文件中以帮助加快速度
  • Python添加了类型注释。Cython可以越来越多地使用这些(使用默认为true的annotation_typing指令(。如果你比cdef更喜欢这些语法,那么就使用它们。或者不是

cdef版本测试得稍微好一点,在";纯Python";模式特别是在与本机C/C++接口方面。但大多数情况下,它们是实现相同目标的不同方法,它们应该生成基本相同的代码,所以你应该使用你喜欢的任何方法。你也可以使用混合物。

大多数Python代码都可以直接"细胞化";,而不会更改您的代码。然而,为了充分利用Cython,您需要通过提供cdef和变量类型来调整Python代码。这不是强制性的,但对于获得Cython所期望的良好速度至关重要。

相关内容

  • 没有找到相关文章

最新更新