python - 在解释器中运行 Cython 代码

标签 python cython spyder

我是 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/

相关文章:

python - 蜘蛛 (Python) : collapse blocks of code

spyder - 是否可以设置 Spyder 自动完成而不按 Tab 键?

python - 如何在 Spyder 中的所有其他窗口之上显示一个 matplotlib 图形窗口

python - Django Rest Framework 序列化器作为表单和嵌套关系

python - 正则表达式匹配数字字符串中的 3 个零

c++ - 将文件或文件名传递给函数

python - Cython 编译突然开始失败

python - 如何强制 pandas read_csv 对所有浮点列使用 float32?

python - Cython 浮点除法 PyExc_ZeroDivision 错误检查

python - Cython fatal error : Python. h 没有这样的文件或目录