python代码通过Cython提高速度

发现网上的很少关于cython的教程
所以希望这篇博客能让很多和我一样的小白少走弯路

傻瓜式教程

步骤一

新建setup.py

from distutils.core import setup
from Cython.Build import cythonize

full_filename = 'xxx.xxx'  # 包含后缀的源文件名
setup(ext_modules=cythonize(full_filename))

该文件将源代码编译为C代码,需要安装Cython的包
这里参数full_filenam就是你要编译的python源文件名,可以是例如./tree/decision_tree.py 或者 random_forest.pyx,注意目录。

步骤二

执行编译

用你的IDE打开Terminal,输入

python setup.py build_ext --inplace

python代码通过Cython提高速度_第1张图片
可能存在在箭头处报错 extension error: Unable to find vsvars32.bat
这是因为没有C++的编译环境

步骤三

配置C++编译环境

网上看到有人说通过cmd查看Python需要的C++编译环境,我百度了一下发现 MSC v.1916对应是VS版本是VS2017,但是安装之后并没有解决。
在这里插入图片描述
有看到一篇博客为 python 设置 Visual Studio 2017 编译环境对这个问题进行了阐述和解决,但是看上去很麻烦我就放弃了这种方法。
最后我的解决办法是卸载VS2017,安装VS2015,VS2015对应的应该是python3.5但是我python3.7也完美解决了这个问题。
VS的安装教程就不贴了,下载链接贴一个。
VisualStudio旧版本下载
python代码通过Cython提高速度_第2张图片

步骤四

编译成功

安装完VS2015就可以编译成功了,网上有人说需要在命令行输SET VS90COMNTOOLS=%VS140COMNTOOLS% VS140对应VS2015版本号,但是我没输也可以。

编译成功图
python代码通过Cython提高速度_第3张图片
编译成功会在你的源文件同目录下生成.c文件,同时在根目录下生成.pyd文件。
python代码通过Cython提高速度_第4张图片
生成的.pyd文件全名应是xxx.cp37-win_amd64.pyd 你可以重命名为xxx.pyd

通过调用module的方式来调用生成的pyd文件,可以在.c文件里看到module_name
python代码通过Cython提高速度_第5张图片
有一个问题就是我在调用的时候pycharm报了红波浪的错,但是编译运行是没有问题的。希望知道解决办法的能留个言。
在这里插入图片描述

写在最后

通过Cython确实速度提升了不少,原本花费时间越久的提升效果越显著,网上看到有人说速度能提升30倍甚至80倍。

你可能感兴趣的:(学习笔记)