专栏首页不二小段Python性能提升20倍居然不是标题党?

Python性能提升20倍居然不是标题党?

前两天有小伙伴发了篇文章给我,让我验证一下靠不靠谱,标题写着《如何在 i5 上实现 20 倍的 Python 运行速度?》,我看了不以为然,八成又是个标题党。看了看发现是篇译文,歪果仁原文标题是 How Does a 20X Speed-Up in Python Grab You? 似乎有点意思,于是我按照文章给出的方法做了一些验证性的尝试。

首先给出大家结论,今年2月份,Intel Python发布了第二版更新,其优化主要针对科学计算(后面会详细说),日常使用(比如我这种写爬虫的)就不用凑热闹了,在我的机器上(i7 6700k/Windows 10 x64)性能提升为5-15倍。环境不同,提升性能可能不同,所以那篇文章说的20倍加速也不算耸人听闻。而且中文社区对Intel® Distribution for Python的讨论的确比较少,所以虽然干货不多,还是抛砖引玉地写一篇笔记出来。

我们都知道,Anaconda是一个Python的科学计算发行版本,里面除了有原生Python以外,还自带了numpy、scipy等科学计算常用的库。那么同样,Intel Distribution则是其另一个发行版本,对某些特定类型运算和内存管理做了优化,而且可以通过Anaconda的conda直接进行安装和管理。

那么效果究竟如何?以下是我在本地电脑按照原文作者方法的实测。

PS 由于网络问题,我没能成功按照原文的方法直接使用conda安装,后面会给出其他办法。

首先是Anaconda Python 3.6

然后是Intel Python 3.5

的确可以看到5~12倍运行速度上的提升。

下面具体来说安装。

安装有两种办法:

一种是本机已有Anaconda,通过conda来安装,这样可以通过新建环境来方便多版本的Python管理,但是我自己通过这种办法一直失败,报错是time out,应该是国内的网络原因,大家可以尝试一下。

另一种办法,适用于本地没有装Anaconda,或者像我一样因为网络原因没办法直接通过命令行安装,可以利用官方提供的安装包来安装,其中也附带了conda,可以像Anaconda一样使用和管理。

先说方法一的步骤,以下是官方说明,我自己没有亲测成功:

https://software.intel.com/en-us/articles/using-intel-distribution-for-python-with-anaconda

1、conda update conda
2、conda config –add channels intel

在这里解释一下conda中channel的作用。利用conda install命令时,程序会到我们设定好的路径(channel)中寻找相应的包。之前说过的通过修改为国内镜像加速下载也是这个院里。这边呢是因为Intel在conda上有自己单独的channel,所以要修改为intel。

3、conda create -n idp intelpython3_core python=3

或者

conda create -n idp intelpython3_full python=3

区别在于一个只装核心部分,另一个是装全部的。

如果想要Python 2.x,则为

conda create -n idp intelpython2_core python=2

这里的话,新建了一个名为idp的env,在后续可以直接激活环境。

4、activate idp

激活环境,后续就是正常的使用了。

如果要在原有的环境中,单独更新某一个包为Intel版本,可以使用

conda install numpy -c intel --no-update-deps

# 我试了几次都遇到了timeout报错。而且由于要修改channel为intel,也没办法用清华大学的镜像加速下载。

方法二:

https://software.intel.com/en-us/intel-distribution-for-python/try-buy

在这边下载相应版本的免费社区版本,然后进行安装。

这边提供一个我下载好的Python 3版本安装包 http://pan.baidu.com/s/1o89FjWQ

之后按照正常的Python路径管理就可以了。

由于我自己不做机器学习,用科学计算也比较少,所以就在这里打住了。有需求的小伙伴可以自己尝试一下性能提升的具体效果。对加速原理感兴趣的可以继续看下面的参考链接。

参考:

http://www.infoworld.com/article/3187484/software/how-does-a-20x-speed-up-in-python-grab-you.html

https://software.intel.com/en-us/articles/intelr-distribution-for-python-2017-update-2

https://software.intel.com/en-us/articles/using-intel-distribution-for-python-with-anaconda

本文分享自微信公众号 - 不二小段(rose-fun),作者:段晓晨

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-04-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【Scrapy】走进成熟的爬虫框架

    今天简单聊聊Scrapy的安装。 前几天有小伙伴留言说能不能介绍推荐一下爬虫框架,我给他推荐了Scrapy,本来想偷个懒,推荐他去看官方文档,里面有一些demo...

    不二小段
  • 【爬虫军火库】Windows创建计划任务定时执行Python脚本

    上次分享了自动参与抽奖助手抽奖的Python代码和Linux服务器的部署方法(Python定时自动参与抽奖助手抽奖),然而并不是每个人都有远程服务器,都熟悉Li...

    不二小段
  • Python为什么文件运行和在命令行运行同样语句但结果却不同?

    这篇是之前知乎上的一个提问,感觉非常有趣而且内容丰富,所以把我自己的回答搬运到公众号来。 另外关于昨天的推送,是因为我之前把文章投到了Python中文社区的公众...

    不二小段
  • Android与Python混合编程

    早在2017年的时候,出于业余兴趣,我就开始研究关于Python移植到Android上的实现方案,我一直希望能实现Android与Python的混合编程,并为此...

    arcticfox
  • 一文总结数据科学家常用的Python库(上)

    我是Python语言的忠实粉丝,它是我在数据科学方面学到的第一门编程语言。Python有三个特点:

    Datawhale
  • Python编程入门电子书教程,看这几个就够了

    这里给初学Python的朋友提供一些建议和指导吧。大神请无视, 俗话说:授人以鱼不如授人以渔。所以我这里只是阐述学习过程,并不会直接详细写某个知识点,毕竟编程...

    用户4502463
  • Python+django网页设计入门(14):使用中间件对抗爬虫

    Python+django网页设计入门(12):使用Bootstrap和jQuery

    Python小屋屋主
  • Anaconda:安装或更新 Python 第三方包

    适用语言:Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。

    Woodson
  • 国家认证的Python工程师有什么能力要求?

    Python这门语言近来是越来越火,在国家层面越来越被重视。除了之前热议的加入高考和中小学教育之外,现在连普通大学生也无法逃脱Python的毒手了。

    小小科
  • Python——简介

    互联网公司广泛使用Python来做的事一般有:自动化运维、自动化测试、大数据分析、爬虫、Web 等。

    py3study

扫码关注云+社区

领取腾讯云代金券