我是 Matlab 和 C++ 用户,最近发现 python (spyder) 可以替代两者。我认为 python 的主要优点之一是能够在解释器模式下工作,然后在我对结果满意后无缝将其转换为快速编译代码。解释环境非常适合原型(prototype)制作、在断点处停止时分析数据、到处抛出绘图和图像等。
我开始研究 Cython,但我并不完全了解编程流程。比方说你有一个 .py 代码你想加速 - 你必须从头开始写一个 .pyx 文件吗?你能在解释模式下运行一个 .pyx 文件,就好像它是一个普通的 .py 文件一样(在编译之前)吗?如何调试 .pyx 文件中的代码?
最佳答案
我对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
这将编译您的代码并为您留下一个新文件。现在,只要该文件位于同一目录中,您就可以轻松导入您在文件中定义的内容,就像导入任何其他模块一样。例如,假设您使用函数 f
编译了一个文件 hello.pyx
,您可以这样写:
from hello import f
然后继续使用f
。
现在,关于您的其他问题。 .pyx
似乎只是表明,这应该是 Cython 代码,没有真正的区别。如上所述,将方法与 setup.py
脚本结合使用,您还可以引用以 .py
结尾的文件。但是,Python 不允许您从 .pyx
文件导入,只能从编译后创建的文件导入。
至于如何调试 .pyx
文件中的代码,我没有足够的信息,尽管您可能只调试未编译的文件,如 。 py
文件。
关于python - 在解释器中运行 Cython 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20307546/