将python代码转化为c语言代码,提高运行效率

将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 setup
from Cython.Build import cythonize

setup(ext_modules=cythonize('fib.pyx'))

我将它重命名为translate.py文件。这个文件的作用是调用 Cython 的cythonize函数把 Python 代码转换为 C 代码。
还有一个要提醒的地方是里面的文件路径,这里是将他们放在同一个目录下。
接下来编译代码:
进入命令行,cd转入那两个文件所在的文件目录,然后输入如下指令

python translate.py build_ext --inplace

如果你的命令行出现如下错误:
1
就需要安装visual studio c++ 14.0
安装好了之后继续执行上面给的命令,就会成功:
将python代码转化为c语言代码,提高运行效率_第1张图片

成功之后再创建一个测试文件test.py:

import time
from fib import fib

start = time.time()
result = fib(20)
end = time.time()
print('斐波那契数列第20项为'+ str(result)+'耗时:'+str(end - start)+'秒')

现在我的文件目录是这样的:
将python代码转化为c语言代码,提高运行效率_第2张图片

下面运行test.py文件:

斐波那契数列第40项为102334155耗时:5.765635251998901

运行如下代码耗时为:

import time

def 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

另外注意:import只会从后缀为.py/.pyc/.pyo/.so/.pyd的文件中导入模块

你可能感兴趣的:(python)