【发布时间】:2017-04-08 15:37:33
【问题描述】:
我一直在尝试了解 cython 的真正工作原理。首先,我编写了 test.pyx 文件,其中包含,
import numpy as np
a=2;b=3;
np.sum(a,b)
np.subtract(a,b)
我将此代码包装在 setup.py 文件中,
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules = cythonize("test.pyx"))
稍后我从命令行运行 test.pyx,
python setup.py build_ext --inplace
此命令生成 test.c 代码。生成的 C 代码非常庞大且难以理解。现在,我只想知道在哪里可以找到 np.sum(a,b) 的实现。如果我成功地将 Python 转换为 C 的 sum 函数,我可以将它用作其他 C 代码中的独立函数。这个函数是否有一些我必须一起复制的依赖项。
期待好的答案。
谢谢大家的建议。在查看了我看到的 html 文件后,
+06: import numpy as np
__pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 6, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
这意味着它正在调用 __pyx_n_s_numpy 模块。 C 编译器如何运行此模块。我认为这个模块的实现是 .py 格式的。
【问题讨论】:
-
1) 您的 Cython 代码不会为
numpy.sum生成代码 - 它只是调用现有函数。 2) 调用cython -a filename会给你带注释的 html,显示什么 Cython 代码转换成什么 c 代码。
标签: python c python-2.7 cython