将python文件编译成cython会加快程序的速度吗?
如果我将python文件编译成cython,我会看到速度的提高吗?或者我需要用cython重写代码才能真正看到改进 我在下面这样做将python文件编译成cython会加快程序的速度吗?,python,cython,Python,Cython,如果我将python文件编译成cython,我会看到速度的提高吗?或者我需要用cython重写代码才能真正看到改进 我在下面这样做 python convert_to_cython.py build_ext --inplace 虽然这个问题相当广泛,但一般来说是的。它确实会加速你的代码,有时会达到100 作为参考,Cython文档说,我引用 但是,对于性能关键型代码,添加静态类型声明通常很有帮助,因为它们将允许Cython跳出Python代码的动态特性,生成更简单、更快的C代码—有时会以数量级
python convert_to_cython.py build_ext --inplace
虽然这个问题相当广泛,但一般来说是的。它确实会加速你的代码,有时会达到100 作为参考,Cython文档说,我引用 但是,对于性能关键型代码,添加静态类型声明通常很有帮助,因为它们将允许Cython跳出Python代码的动态特性,生成更简单、更快的C代码—有时会以数量级的方式更快 像C/C++这样的语言速度更快的主要原因是它们创建了依赖于机器的汇编语言来调整所有依赖于硬件的优化。这主要是使用编译器实现的,因为
编辑2回答问题,还是需要用cython重写代码才能看到改进 不因为Cython编译器为您完成了全部工作 Cython编译器将其转换为C代码,从而对Python/CAPI进行等效调用 由于Cython几乎可以接受任何有效的python源文件,因此入门过程中最困难的事情之一就是弄清楚如何编译扩展
要了解更多信息,请访问当前的,这个问题太宽泛了,因为答案在很大程度上取决于Python代码的外观。如果没有看到它,或者至少对它的作用有一些了解,就不可能给你一个简单的答案 如果您的代码主要调用来自其他编译库的函数,那么您很可能看不到任何改进,甚至可能看不到更慢的运行时。例如,有些人不明白为什么Cython不能神奇地加速他们的numpy代码。然而,像嵌套Python
for
循环这样的东西可以很好地加快使用Cython的速度
您的第一步应该始终是分析您的代码(例如,使用优秀代码)。一旦你确定了瓶颈在哪里,你就可以考虑如何加速它们,可能是通过在Cython中重写它们。用Cython重写所有现有的Python代码几乎肯定是浪费时间。第一句话与你的答案相矛盾。@IgnacioVazquez Abrams第一句话说,通过静态地提到类型,它可以创建更快的可执行文件,我在回答中也提到了同样的内容。那么,我该如何反驳??“或者我需要用cython重写代码才能真正看到改进?”添加静态声明是重写它的一部分。要使用
cython
获得最佳改进,您需要阅读cython
文档。关于使用cython获得预期的改进,有很多问题和答案。研究这些。而且,我不明白你的例子应该做什么。什么是将\u转换为\u cython.py
?看起来您混淆了实际Python源代码的定义。