请注意,我是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所期望的良好速度至关重要。