日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

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

 copy_left 2021-11-30

眾所周知,Python非常強大,簡單易學(xué),又有很多輪子可以直接拿來用。

凡事有利必有弊,Python運行速度慢。如果你要做一些很耗時間的事情,就會頭疼。

這時候也許會有人建議你用C,C++等編程語言。

天啊,他們是開玩笑嗎?換C語言有那么容易嗎!

不過現(xiàn)在福音來了,不用換編程語言,也可以把速度提高很多倍。

這就是我今天要介紹的PyPy!

1 做個實驗

這是一段普通的Python代碼,計算從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)運行,然后再用PyPy運行。

它們的運行時間對比大概是這樣的:

圖片

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

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

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

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

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

翻譯成中文的意思是:

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

2 PyPy是什么?

到底什么是PyPy?

難道我要再學(xué)習(xí)一門編程語言嗎?

不不不!

PyPy只是另外一種Python代碼執(zhí)行引擎。你的Python代碼可以在不做任何改動的情況下,直接運行在PyPy上。

就好像你原本開一輛夏利汽車,現(xiàn)在給你來了一輛法拉利!

同樣是,同樣的駕照和駕駛技術(shù),你忽然就變得快樂(快了)起來。因為引擎變了,你的吸引力都變大了很多。

圖片

3 又快又好!

PyPy為什么可以這么快呢?

我們默認(rèn)使用的CPython解釋器,它的執(zhí)行過程是這樣的:

Python源代碼 -> 字節(jié)碼 -> 一句一句解釋成機器語言 -> 執(zhí)行

而PyPy使用Just In Time(JIT)技術(shù)把Python代碼直接編譯成機器語言,大概過程是這樣的:

Python源代碼 -> 機器語言 -> 執(zhí)行

就光看上面加粗的字的長度,你也看出PyPy肯定很快。

這是PyPy官網(wǎng)給出的比較綜合的速度對比:

圖片

平均來說,PyPy比CPython快4.2倍。

它的好處除了速度快,還有省內(nèi)存。這是官方說明:

圖片

更要命的是,PyPy使用它非常簡單!

4 極簡入門

1. 下載

去官網(wǎng)下載頁面:

https://www./download.html

下載適合你的版本:

圖片

2. 配置環(huán)境變量

下載后隨便解壓到一個位置,并將這個目錄添加到系統(tǒng)環(huán)境變量:

圖片

3. 使用pypy替換python命令

剩下的就是在運行python命令的地方,改成pypy3就行了。

比如打開交互式Python,直接運行pypy3就可以了:

圖片

再比如安裝第三方庫,先安裝pip,然后運行和以前幾乎一樣的命令就行了:

pypy3 -m pip install XXX
圖片

注:由于我很少使用 Windows電腦,本部分截圖來源于機器學(xué)習(xí)算法與Python實戰(zhàn) ,作者海洋。

5 適用型和局限性

如果它那么快,又省內(nèi)存,為什么不把默認(rèn)的CPython直接改成pypy,讓地球人都用pypy好了!

本文開頭說過一句話,凡事有利必有弊,沒有什么事情是完美的。

Pypy的好處:

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

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

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

7 最后的建議

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

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

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多