1、新建Cython脚本,命名为fibonacci.pyx,内容如下,cpdef关键字指示该函数同时支持Python和C语言的调用:
cpdef long long fib(int n):
if n < 2:
return n
return fib(n-1) + fib(n-2)
2、在相同目录下新建文件setup.py,用于编译Cython模块并生成动态链接库,内容如下:
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize("fibonacci.pyx"))
然后执行如下命令,编译Cython模块并生成动态链接库,执行完成之后就可以进行测试:
python setup.py build_ext --inplace
4、新建Python脚本,命名为fibonacci_test.py,内容如下:
from fibonacci import fib
import time
start_time = time.time()
result = fib(40)
end_time = time.time()
print("Cython version result: ", result, ", time cost: ", end_time - start_time, "s")
def fibonacci_python(n):
if n < 2:
return n
return fibonacci_python(n-1) + fibonacci_python(n-2)
start_time = time.time()
result = fibonacci_python(40)
end_time = time.time()
print("Python version result: ", result, ", time cost: ", end_time - start_time, "s")
执行如下命令,进行测试,会发现使用Cython和不使用Cython版本的时间差距非常大:
python fibonacci_test.py