我一直在试图理解cython是如何工作的。第一个,我已经写了包含test.pyx文件,在使用Cython生成的C代码中识别C函数
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的翻译总和函数可以将它用作其他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代码。 – DavidW