Cython是用于构建C代码还是用于构建Python扩展?

时间:2016-11-01 16:07:06

标签: python c++ c cython

我是C ++ / C#开发人员团队中唯一的Matlab用户。我正在过渡到Python,并希望Cython可以帮助我弥合我的工作和同事的工作之间的差距。

我原本以为Cython可以用来将Python代码编译成C源文件,然后可以从Python导入/调用。我希望从中获得两个好处:

  1. 我的程序速度提升,
  2. 一个C源文件,可以传递给我的同事进行一些轻微抛光,然后最终在他们的(C ++ / C#)包中实现。
  3. 不幸的是,看起来后者不是一种选择,但我并不积极。看起来C源文件非常臃肿,有很多对Python的引用。我有一个三行Python脚本声明一个cdef char *,指定字符串“hello world!”到该变量,然后打印它。生成的C文件长度为2000行。

    所以,我的问题是,Cython无法获得#2的好处?使用Cython 生成的C代码是否仅供Python 使用,或者有没有办法删除Python膨胀并获得Python代码的简洁C转换?

1 个答案:

答案 0 :(得分:6)

Cython的输出不适合人类消费

Cython将C视为一种中间语言,与LLVM将LLVM IR视为中间语言的方式大致相同。 Cython的目的是生成 Python扩展模块,而C只是达到这个目的最合理的方法。它通常会产生一个曲折的小预处理器指令迷宫,完全不可读。如果你想要可以阅读的C代码,你不应该使用Cython。