Cython:运行错误解决方案

分类: python |
ipython运行Cython错误,折腾了两个小时,开始显示
%%cython_pyximport ImportError: Building module function failed: ['DistutilsPlatformError: Unable to find vcvarsall.bat\n']
查了半天在py目录下面的lib里面的distuils里面创建了一个distuils.cfg文件,内容是:
[build]
compiler=mingw32
[build_ext]
compiler = mingw32
结果显示另外一个错误:
然后去安装MinGW设置环境变量,更改注册表,修改VS设置,都不行,弄了半天一直以为是vs的问题,后来终于在stackoverflow找到了答案
这哥们也查了几个小时,原来是MinGW和Python没有相互关联,解决方案原来很简单,去GitHub下载完整的安装包重新装,下载地址如下:
https://github.com/develersrl/gccwinbinaries
安装包内容和功能:
安装后正常运行,附个图比较一下用cython的速度提升效果:
通过cpdef设置数据类型后速度进一步提高了,有点c的感觉,结合numpy后就提升就接近一百倍了!如下图:
184毫秒提升到2.32毫秒!cython结合numpy确实比较快,和传统的Py写法并没有多大的区别,不过是定义数据类型而已(很熟悉的c感觉有木有?不过比c容易太多了),然后加入np(注意的是cython不认series,所以需要加上values,例如df['a'].values才行),速度就提高了大几十倍,当然对于这样的循环遍历用numba能进一步提速但不在本文的讨论范围,以后有时间再写
希望本文对遇到同样问题的朋友有帮助