众所周知,Python非常强大,简单易学,又有很多轮子可以直接拿来用。
但凡事有利必有弊,Python运行速度慢。如果你要做一些很耗时间的事情,就会头疼。
这时候也许会有人建议你用C,C++等编程语言。
天啊,他们是开玩笑吗?换C语言有那么容易吗!
不过现在福音来了,不用换编程语言,也可以把速度提高很多倍。
这就是我今天要介绍的PyPy!
这是一段普通的Python代码,计算从0到1亿之间的整数之和:
import time
from termcolor import colored
start = time.time()
number = 0
for i in range(100000000):
number += i
print(colored('FINISHED', 'green'))
print(f'Ellapsed time: {time.time() - start} s')
用默认的Python解释器(CPython)运行,然后再用PyPy运行。
它们的运行时间对比大概是这样的:
当然,不同的机器运行可能会有少许差异,但是你可以看到非常明显的差异。
好吧,我就把这篇文章的目的明说了吧:
其实不需要马上用PyPy,但是你有必要知道它的存在,在必要的时候使用它。
下面这句话是Python的发明者说的:
'If you want your code to run faster, you should probably just use PyPy.' -- Guido van Rossum (creator of Python)
翻译成中文的意思是:
如果你想让代码运行的更快,你或许应该直接用PyPy.
到底什么是PyPy?
难道我要再学习一门编程语言吗?
不不不!
PyPy只是另外一种Python代码执行引擎。你的Python代码可以在不做任何改动的情况下,直接运行在PyPy上。
就好像你原本开一辆夏利汽车,现在给你来了一辆法拉利!
同样是利,同样的驾照和驾驶技术,你忽然就变得快乐(快了)起来。因为引擎变了,你的吸引力都变大了很多。
PyPy为什么可以这么快呢?
我们默认使用的CPython解释器,它的执行过程是这样的:
Python源代码 -> 字节码 -> 一句一句解释成机器语言 -> 执行
而PyPy使用Just In Time(JIT)技术把Python代码直接编译成机器语言,大概过程是这样的:
Python源代码 -> 机器语言 -> 执行
就光看上面加粗的字的长度,你也看出PyPy肯定很快。
这是PyPy官网给出的比较综合的速度对比:
平均来说,PyPy比CPython快4.2倍。
它的好处除了速度快,还有省内存。这是官方说明:
更要命的是,PyPy使用它非常简单!
去官网下载页面:
https://www.pypy.org/download.html
下载适合你的版本:
下载后随便解压到一个位置,并将这个目录添加到系统环境变量:
剩下的就是在运行python命令的地方,改成pypy3就行了。
比如打开交互式Python,直接运行pypy3就可以了:
再比如安装第三方库,先安装pip,然后运行和以前几乎一样的命令就行了:
pypy3 -m pip install XXX
注:由于我很少使用 Windows电脑,本部分截图来源于机器学习算法与Python实战 ,作者海洋。
如果它那么快,又省内存,为什么不把默认的CPython直接改成pypy,让地球人都用pypy好了!
本文开头说过一句话,凡事有利必有弊,没有什么事情是完美的。
Pypy的好处:
但是它也有不小的局限性:
总的建议在文章开头已经给了:
联系客服