|
眾所周知,Python非常強(qiáng)大,簡(jiǎn)單易學(xué),又有很多輪子可以直接拿來(lái)用。 但凡事有利必有弊,Python運(yùn)行速度慢。如果你要做一些很耗時(shí)間的事情,就會(huì)頭疼。 這時(shí)候也許會(huì)有人建議你用C,C++等編程語(yǔ)言。 天啊,他們是開(kāi)玩笑嗎?換C語(yǔ)言有那么容易嗎! 不過(guò)現(xiàn)在福音來(lái)了,不用換編程語(yǔ)言,也可以把速度提高很多倍。 這就是我今天要介紹的PyPy! 1 做個(gè)實(shí)驗(yàn)這是一段普通的Python代碼,計(jì)算從0到1億之間的整數(shù)之和: import time用默認(rèn)的Python解釋器(CPython)運(yùn)行,然后再用PyPy運(yùn)行。 它們的運(yùn)行時(shí)間對(duì)比大概是這樣的: 當(dāng)然,不同的機(jī)器運(yùn)行可能會(huì)有少許差異,但是你可以看到非常明顯的差異。 好吧,我就把這篇文章的目的明說(shuō)了吧:
下面這句話(huà)是Python的發(fā)明者說(shuō)的:
翻譯成中文的意思是:
2 PyPy是什么?到底什么是PyPy? 難道我要再學(xué)習(xí)一門(mén)編程語(yǔ)言嗎? 不不不! PyPy只是另外一種Python代碼執(zhí)行引擎。你的Python代碼可以在不做任何改動(dòng)的情況下,直接運(yùn)行在PyPy上。 就好像你原本開(kāi)一輛夏利汽車(chē),現(xiàn)在給你來(lái)了一輛法拉利! 同樣是利,同樣的駕照和駕駛技術(shù),你忽然就變得快樂(lè)(快了)起來(lái)。因?yàn)橐孀兞耍愕奈Χ甲兇罅撕芏唷?/p> 3 又快又好!PyPy為什么可以這么快呢? 我們默認(rèn)使用的CPython解釋器,它的執(zhí)行過(guò)程是這樣的: Python源代碼 -> 字節(jié)碼 -> 一句一句解釋成機(jī)器語(yǔ)言 -> 執(zhí)行 而PyPy使用Just In Time(JIT)技術(shù)把Python代碼直接編譯成機(jī)器語(yǔ)言,大概過(guò)程是這樣的: Python源代碼 -> 機(jī)器語(yǔ)言 -> 執(zhí)行 就光看上面加粗的字的長(zhǎng)度,你也看出PyPy肯定很快。 這是PyPy官網(wǎng)給出的比較綜合的速度對(duì)比: 平均來(lái)說(shuō),PyPy比CPython快4.2倍。 它的好處除了速度快,還有省內(nèi)存。這是官方說(shuō)明: 更要命的是,PyPy使用它非常簡(jiǎn)單! 4 極簡(jiǎn)入門(mén)1. 下載去官網(wǎng)下載頁(yè)面: https://www./download.html 下載適合你的版本: 2. 配置環(huán)境變量下載后隨便解壓到一個(gè)位置,并將這個(gè)目錄添加到系統(tǒng)環(huán)境變量: 3. 使用pypy替換python命令剩下的就是在運(yùn)行python命令的地方,改成pypy3就行了。 比如打開(kāi)交互式Python,直接運(yùn)行pypy3就可以了: 再比如安裝第三方庫(kù),先安裝pip,然后運(yùn)行和以前幾乎一樣的命令就行了: 注:由于我很少使用 Windows電腦,本部分截圖來(lái)源于機(jī)器學(xué)習(xí)算法與Python實(shí)戰(zhàn) ,作者海洋。 5 適用型和局限性如果它那么快,又省內(nèi)存,為什么不把默認(rèn)的CPython直接改成pypy,讓地球人都用pypy好了! 本文開(kāi)頭說(shuō)過(guò)一句話(huà),凡事有利必有弊,沒(méi)有什么事情是完美的。 Pypy的好處:
但是它也有不小的局限性:
7 最后的建議總的建議在文章開(kāi)頭已經(jīng)給了:
|
|
|
來(lái)自: copy_left > 《python相關(guān)》