将python代码转化为c语言代码,提高运行效率
首先,需要安装cpython库:
pip install cython
安装完成之后,写一段简单的代码,例如下面这个利用递归求斐波那契数列的函数,然后保存为.pyx文件:
def fib(n):return 1 if n ==1 or n == 2 else fib(n - 1) + fib(n - 2)
我将它保存为fib.pyx文件
然后再创建一个文件,文件的内容如下:
from setuptools import setupfrom Cython.Build import cythonizesetup(ext_modules=cythonize('fib.pyx'))
我将它重命名为translate.py文件。这个文件的作用是调用 Cython 的cythonize函数把 Python 代码转换为 C 代码。
还有一个要提醒的地方是里面的文件路径,这里是将他们放在同一个目录下。
接下来编译代码:
进入命令行,cd转入那两个文件所在的文件目录,然后输入如下指令
python translate.py build_ext --inplace
如果你的命令行出现如下错误:
就需要安装visual studio c++ 14.0
安装好了之后继续执行上面给的命令,就会成功:
成功之后再创建一个测试文件test.py:
import timefrom fib import fibstart = time.time()result = fib(20)end = time.time()print('斐波那契数列第20项为'+ str(result)+'耗时:'+str(end - start)+'秒')
现在我的文件目录是这样的:
下面运行test.py文件:
斐波那契数列第40项为102334155耗时:5.765635251998901秒
运行如下代码耗时为:
import timedef fib(n):return 1 if n ==1 or n == 2 else fib(n - 1) + fib(n - 2)start = time.time()result = fib(40)end = time.time()print('斐波那契数列第20项为'+ str(result)+'耗时:'+str(end - start)+'秒')
斐波那契数列第40项为102334155耗时:27.247100830078125秒