加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Cython:运行错误解决方案

(2018-05-25 15:04:12)
分类: 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
安装包内容和功能:
http://s9/mw690/005uQhfvzy7kJTikfgc08&690
除了安装外还可以选择添加环境变量和最重要的包括对当前py的设置,另外py2.7以上的选9.0安装:
安装后正常运行,附个图比较一下用cython的速度提升效果:
通过cpdef设置数据类型后速度进一步提高了,有点c的感觉,结合numpy后就提升就接近一百倍了!如下图:
184毫秒提升到2.32毫秒!cython结合numpy确实比较快,和传统的Py写法并没有多大的区别,不过是定义数据类型而已(很熟悉的c感觉有木有?不过比c容易太多了),然后加入np(注意的是cython不认series,所以需要加上values,例如df['a'].values才行),速度就提高了大几十倍,当然对于这样的循环遍历用numba能进一步提速但不在本文的讨论范围,以后有时间再写

希望本文对遇到同样问题的朋友有帮助

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有