众所周知,Python非常强大,简单易学,又有很多轮子可以直接拿来用。
但凡事有利必有弊,Python运行速度慢。如果你要做一些很耗时间的事情,就会头疼。
这时候也许会有人建议你用C,C++等编程语言。
天啊,他们是开玩笑吗?换C语言有那么容易吗!
不过现在福音来了,不用换编程语言,也可以把速度提高很多倍。
这就是我今天要介绍的PyPy!
这是一段普通的Python代码,计算从0到1亿之间的整数之和:
用默认的Python解释器(CPython)运行,然后再用PyPy运行。
它们的运行时间对比大概是这样的:
当然,不同的机器运行可能会有少许差异,但是你可以看到非常明显的差异。
好吧,我就把这篇文章的目的明说了吧:
其实不需要马上用PyPy,但是你有必要知道它的存在,在必要的时候使用它。
下面这句话是Python的发明者说的:
翻译成中文的意思是:
如果你想让代码运行的更快,你或许应该直接用PyPy.
到底什么是PyPy?
难道我要再学习一门编程语言吗?
不不不!
PyPy只是另外一种Python代码执行引擎。你的Python代码可以在不做任何改动的情况下,直接运行在PyPy上。
就好像你原本开一辆夏利汽车,现在给你来了一辆法拉利!
同样是利,同样的驾照和驾驶技术,你忽然就变得快乐(快了)起来。因为引擎变了,你的吸引力都变大了很多。
PyPy为什么可以这么快呢?
我们默认使用的CPython解释器,它的执行过程是这样的:
Python源代码 -> 字节码 -> 一句一句解释成机器语言 -> 执行
而PyPy使用Just In Time(JIT)技术把Python代码直接编译成机器语言,大概过程是这样的:
Python源代码 -> 机器语言 -> 执行
就光看上面加粗的字的长度,你也看出PyPy肯定很快。
这是PyPy官网给出的比较综合的速度对比:
平均来说,PyPy比CPython快4.2倍。
它的好处除了速度快,还有省内存。这是官方说明:
更要命的是,PyPy使用它非常简单!
1. 下载
去官网下载页面:
https://www.pypy.org/download.html
下载适合你的版本:
2. 配置环境变量
下载后随便解压到一个位置,并将这个目录添加到系统环境变量:
3. 使用pypy替换python命令
剩下的就是在运行python命令的地方,改成pypy3就行了。
比如打开交互式Python,直接运行pypy3就可以了:
再比如安装第三方库,先安装pip,然后运行和以前几乎一样的命令就行了:
注:由于我很少使用 Windows电脑,本部分截图来源于机器学习算法与Python实战 ,作者海洋。
5 适用型和局限性
如果它那么快,又省内存,为什么不把默认的CPython直接改成pypy,让地球人都用pypy好了!
本文开头说过一句话,凡事有利必有弊,没有什么事情是完美的。
Pypy的好处:
- 速度快,比CPython的平均快4.2倍。
- 对于占用内存比较大程序(比如几百M),可以节约内存。
- 适合长时间运行的代码。
但是它也有不小的局限性:
- 适合纯Python的代码
- 对于不是纯Python的代码(通常是调用C库的Python包,比如Numpy),可能有兼容性问题。现在它已经兼容Numpy了,但是可能有其他问题。
总的建议在文章开头已经给了:
1.你不需要马上用PyPy,除非你碰到了性能问题。
2.但是你有必要知道它的存在,在必要的时候使用它。
作为一个代码打工仔,对于绝大部分程序员来说,想要成为牛逼的真正挣钱程序员的路还很长,一刻都不能懈怠。
我们无法从HR角度,或者技术leader的角度来臆测哪种状态的面试更能获取面试官青睐。但通过我们积攒的大量的面试经验,大家多少可以推断一些成为有竞争力的程序员的一些必要条件。
当初我在字节认识一个非常非常资深的前辈,他到字节比我早三年,但因为各种原因级别不是很高。我当时问他,既然你对现状如此不满,为什么不想着离开寻找更好的机会呢?
他沉思了片刻跟我说,他说我现在在这里虽然待着不顺心,但是我接触到的人都是非常优秀的。我遇到问题,还可以和你们讨论讨论。我如果出去了,我要是再遇到问题,可能连一个讨论的人都没有。
我当时听听只是觉得有道理,现在再回想起来,感受非常深刻。三观、格局、能力,能够进入大公司的,这三个方面一般都不会太差。别的不说,就拿个人能力而言,我曾出国出差过几个月,有幸见识了许多各种海外名校的同事,和他们学习交流人工智能,这真的让我AI有了更深层次的认识。
除了优秀的同事之外,大公司里往往还有丰富的内部文档和资料。我当时在字节内部看到了很多优秀的文章,也有很多优秀的技术沙龙和分享。现在想起来两年下来,也没有去过几次,文章和资料看得也不算多,现在想想颇为遗憾。别的不说,就拿推荐领域而言,近些年质量不错的论文往往都来源于大公司尤其是国内的大公司,以腾讯、华为和头条为主。除了公开的论文,公司内部还有很多技术相关的资料和文档,这些真的可以说是有价无市,非常珍贵。
Python 知识手册
Linux 知识手册
爬虫查询手册
而且,这些资料不是扫描版的,里面的文字都可以直接复制,非常便于我们学习:
数据分析知识手册:
机器学习知识手册:
金融量化知识手册:
我们大量需要前端岗位、python岗位、Java 岗位、Android 和 iOS 的开发岗位,工作地点:北京字节,欢迎校招社招扫描下方二维码找我内推
Python资料、技术、课程、解答、咨询也可以直接点击下面名片,
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/13325.html