在解释器中运行Cython代码

时间:2013-12-01 00:59:44

标签: python cython spyder

我是Matlab和C ++用户,最近发现python(spyder)可能替代它们。我认为python的主要好处之一是能够在解释器模式下工作,然后无缝地将其转换为快速编译的代码,一旦我对结果感到满意。解释的环境非常适合原型设计,在断点处停止分析数据,在周围投掷图形和图像等。

我开始研究Cython,我并不完全理解编程流程。假设你有一个你想要加速的.py代码 - 你是否必须从头开始编写.pyx文件?你可以在解释模式下运行.pyx文件,就好像它是一个普通的.py文件(在编译之前)吗?如何调试.pyx文件中的代码?

1 个答案:

答案 0 :(得分:0)

我对Cython的经验不是很多,但是从他们文档中的this条目来看,推荐的工作流程是创建一个setup.py文件,并包含以下几行:

from distutils.core import setup
from Cython.Build import cythonize

setup(name='Hello world app', ext_modules=cythonize("hello.pyx"))

hello.pyx只是一个示例文件,您将不得不替换字符串以引用您的Python脚本。

随后您将可以致电

python setup.py build_ext --inplace

它将编译您的代码,并给您留下一个新文件。现在,只要该文件位于同一目录中,就可以像导入其他模块一样轻松地导入文件中定义的内容。例如,假设您使用功能hello.pyx编译了文件f,则可以编写:

from hello import f

,然后继续使用f


现在,关于您的其他问题。 .pyx似乎只是表明这应该是Cython代码,没有真正的区别。如上所述,通过将方法与setup.py脚本一起使用,您还可以引用结尾为.py的文件。但是,Python不允许您从.pyx文件中导入,只能从编译后创建的文件中导入。

关于如何调试.pyx文件中的代码,我没有足够的信息,尽管您可能可以像.py文件一样调试未编译的文件。< / p>