Cython是在pyx后缀的文件里写的,官方教程链接如下:Welcome to Cython’s Documentationdocs.cython.org
以计算平均数为例,利用Cython结合C来写的话,需要如下四个文件
1、头文件mean_cy.h,定义一个C的方法
double c_mean(double* in_array, int size);
2、cython的pyx文件mean_cy.pyx,可以直接新建文本文件改一下后缀就是这个格式了。
import numpy as np
cimport numpy as np
np.import_array()
cdef extern from "mean_cy.h":
double c_mean(double* in_array, int size)
def mean(np.ndarray[double, ndim=1, mode="c"] in_array not None,):
return c_mean( np.PyArray_DATA(in_array), in_array.shape[0])
3、实现具体方法的文件sources.h
#include
#include
#include
double c_mean(double* in_array, int size)
{
int i;
double sum=0;
for(i=0;i
sum += in_array[i];
}
return sum/size;
}
4、Python执行编译的文件setup.py
from distutils.core import setup, Extension
from Cython.Distutils import build_ext
import numpy
setup(
cmdclass={'build_ext': build_ext},
ext_modules=[Extension("mean_cy", sources=["mean_cy.pyx", "source.c"], include_dirs=[numpy.get_include()])],
)
将这些文件放入到同一个文件夹内,cd进入到该路径下,然后执行
python setup.py build
python setup.py install
验证(实际编译结果):