小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

?比Python快得嚇人,PyPy極簡(jiǎn)入門(mén),Python進(jìn)階必備!

 copy_left 2021-11-30

眾所周知,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
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')

用默認(rèn)的Python解釋器(CPython)運(yùn)行,然后再用PyPy運(yùn)行。

它們的運(yùn)行時(shí)間對(duì)比大概是這樣的:

圖片

當(dāng)然,不同的機(jī)器運(yùn)行可能會(huì)有少許差異,但是你可以看到非常明顯的差異。

好吧,我就把這篇文章的目的明說(shuō)了吧:

其實(shí)不需要馬上用PyPy,但是你有必要知道它的存在,在必要的時(shí)候使用它。

下面這句話(huà)是Python的發(fā)明者說(shuō)的:

'If you want your code to run faster, you should probably just use PyPy.' -- Guido van Rossum (creator of Python)

翻譯成中文的意思是:

如果你想讓代碼運(yùn)行的更快,你或許應(yīng)該直接用PyPy.

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)行和以前幾乎一樣的命令就行了:

pypy3 -m pip install XXX
圖片

注:由于我很少使用 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的好處:

  • 速度快,比CPython的平均快4.2倍。
  • 對(duì)于占用內(nèi)存比較大程序(比如幾百M(fèi)),可以節(jié)約內(nèi)存。
  • 適合長(zhǎng)時(shí)間運(yùn)行的代碼。

但是它也有不小的局限性:

  • 適合純Python的代碼
  • 對(duì)于不是純Python的代碼(通常是調(diào)用C庫(kù)的Python包,比如Numpy),可能有兼容性問(wèn)題?,F(xiàn)在它已經(jīng)兼容Numpy了,但是可能有其他問(wèn)題。

7 最后的建議

總的建議在文章開(kāi)頭已經(jīng)給了:

  1. 你不需要馬上用PyPy,除非你碰到了性能問(wèn)題。
  2. 但是你有必要知道它的存在,在必要的時(shí)候使用它。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多