我一直在試圖理解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