首頁 > 軟體

pypy提升python專案效能使用詳解

2022-12-11 14:01:02

一、PyPy介紹

PyPy是用Python實現的Python直譯器的動態編譯器,是Armin Rigo開發的產品,能夠提升我們python專案的執行速度。PyPy 是利用即時編譯的 Python 的替代實現。

背後的原理是 PyPy 開始時就像一個直譯器,直接從原始檔執行我們的 Python 程式碼。但是,PyPy 不是逐行執行程式碼,而是在執行它們之前將部分程式碼編譯為機器程式碼。

根據官方檔案的介紹可以看到,平均下來PyPy比CPython(也就是我們主流使用的python)快4.5倍:

PyPy除了速度快外,還有下面一些特點:

  • 記憶體使用情況比cpython少
  • gc策略更優化
  • Stackless 協程模式預設支援,支援高並行
  • 相容性好,高度相容cpython實現,基本可以無縫切換
  • PyPy為許多平臺和作業系統提供預編譯的二進位制檔案:

二、PyPy安裝

我們直接存取下載地址:www.pypy.org/download.ht… 下載對應的包使用即可。

下載完成後解壓到任意目錄然後加入到環境變數中:

然後在控制檯中執行pypy就可以開始使用它了:

三、PyPy和Python測試對比

我們可以通過一個簡單的指令碼來測試一下它們之間的效能差異,下面是一個迴圈3千萬次的累乘計算:

import datetime
x = 0
start_time = datetime.datetime.now()
for i in range(30000000):
    x += i * i
print('耗時:', datetime.datetime.now() - start_time)

測試結果

python耗時: 0:00:03.357052
pypy耗時: 0:00:00.761932

可以看到有近4.5倍的效能差距,這也符合PyPy官網介紹的。

四、PyPy注意事項

經過測試PyPy也有一些庫是不支援的:

  • pyinstrument
  • sshtunnel

這只是我經常使用的一些庫中發現不支援的庫,但絕大部分的庫都是支援的,比如Django、requests、pymysql 等。

另外,對於諸如numpypandas這類本身就是C語言開發的擴充套件時,PyPy的效能反而會更低,PyPy只對純Python庫有明顯的效能提升。

最後在你決定要使用PyPy時,你應該思考你的專案是否有效能瓶頸,或者效能瓶頸是因為Python本身效率慢的問題。如果是後端介面專案(類似使用flask、django開發的後端)其效能瓶頸往往在SQL的執行和程式碼本身的邏輯問題上,而不是python執行慢導致的。所以即便你使用了PyPy也大概率不能解決你的效能問題。

以上就是pypy提升python專案效能使用詳解的詳細內容,更多關於python pypy專案效能提升的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com