python - Noob-Ready Cython 教程

标签 python c cython

我知道一堆脚本语言(python、ruby、lua、php),但我不知道任何编译语言,如 C/C++,我想尝试使用 cython 加速一些 python 代码,这本质上是一个 python -> C 编译器,旨在为 python 创建 C 扩展。基本上,您使用更严格的 python 版本进行编码,该版本编译为 C -> native 代码。

这就是问题所在,我不知道 C,但是 cython 文档针对显然已经知道 C 的人(没有解释,只介绍),对我没有帮助,我需要知道是否有是针对 python 程序员的任何好的 cython 教程,或者我在学习 Cython 之前必须学习 C。

请记住,我是一名称职的 python 程序员,我宁愿从我已经擅长的语言的角度学习 cython,而不是为了学习 cython 而学习一门全新的语言。

1) 请不要推荐 psyco

编辑:任何有助于理解官方 cython 文档的信息都是有用的信息

最佳答案

cython擅长两种不同的事情

  1. 与 C 语言库的接口(interface)
  2. 加速 Python 代码

它可能从 1. 中得到更多的曝光,因此强调你找到的 C Material 的教程 Material 。听起来你想像 2 一样使用它。

根据我使用 cython 的经验,您可以尝试编译您的 python 程序,看看它是否有效。它会变得更快(也许)。为了获得更快的速度,您需要有选择地将 python 类型转换为 C 类型。这开始发挥 cython 的力量。

如果您查看 official tutorial你需要研究他们在哪里使用了 cdef 关键字。

回顾一下

  1. 使用 cython 编译您现有的 python 程序,并尽可能减少更改
  2. 将一些变量声明为cdef并使其再次起作用
  3. 如果不够快,请转到第 2 步。

很抱歉,这不是一个教程的指针,但它应该给你一个前进的方向!

关于python - Noob-Ready Cython 教程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1582105/

相关文章:

python - 为什么向字典中的集合添加一个元素,所有集合都会被修改? (Python)

python - 如何将多维数组传递给 pyopencl.algorithm.copy_if() -- PyOpenCL,

python - 在 Cython 代码中定义将在代码的 C 部分中使用的枚举

distutils - 使用distutils进行构建时,如何覆盖Cython的默认编译标志?

python - 变量正在更新以打印准确的分数

python - 防止数据库中数据重复

python - 是否可以在未传递任何内容时将 help 作为默认参数吐出?

c++ - main() 函数返回值的转换是如何工作的?

c - 在代码块中包含一个 gobject.h

python - 混合 Cython 类和 SqlAlchemy