我是Matlab和C ++用户,最近发现python(spyder)可能替代它们。我认为python的主要好处之一是能够在解释器模式下工作,然后无缝地将其转换为快速编译的代码,一旦我对结果感到满意。解释的环境非常适合原型设计,在断点处停止分析数据,在周围投掷图形和图像等。
我开始研究Cython,我并不完全理解编程流程。假设你有一个你想要加速的.py代码 - 你是否必须从头开始编写.pyx文件?你可以在解释模式下运行.pyx文件,就好像它是一个普通的.py文件(在编译之前)吗?如何调试.pyx文件中的代码?
答案 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>