1. 程式人生 > >Windows + PyPy 執行python:提高python執行速度

Windows + PyPy 執行python:提高python執行速度

pypy是python的一種直譯器,執行python的速度比標準python快很多。

1.下載pypy並新增環境變數

根據自己的python版本在官網下載pypy。我的python是32位的3.5.0,因此下載“Python 3.5.3 compatible PyPy3.5 v6.0.0”下的Windows binary (32bit) BETA(這是目前的最新版本)。如果官網不好下載,可以在我的資源裡下載。

解壓下載的檔案,如我把解壓檔案放在C:\Program Files (x86)中。檔名是pypy3-v6.0.0-win32。

新增環境變數:在此電腦上右鍵——屬性——(左側的)高階系統設定——(頂部的)高階——(底部的)環境變數——找到系統變數中的Path——雙擊Path或者點選編輯按鈕——(右側的)新建——輸入pypy.exe所在資料夾的路徑(如我的C:\Program Files (x86)\pypy3-v6.0.0-win32)——確定。

2.在sublime中配置pypy並執行python

在sublime中:Tools——Build System——New Build System:彈出一個頁面。

頁面上面寫有一行內容。刪除頁面中的所有內容,將之改為下面的內容,其中C:/Program Files (x86)/pypy3-v6.0.0-win32/pypy3.exe是你自己的路徑,然後儲存檔案 ,儲存路徑必須是預設路徑,預設檔名為untitled.sublime-build,可以把untitled修改為自己想要確定的名字,也即是Build System中顯示的名字,此處我的名字為Pypy.sublime-build。

{
    "cmd": ["C:/Program Files (x86)/pypy3-v6.0.0-win32/pypy3.exe","-u","$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python",
}

新建一個python程式,測試程式碼執行速度:

def foo(a, b):
	k = 0
	for i in range(a, b):
		k += i
	return k

print(foo(1, 100000000))

使用sublime自帶的直譯器,即上面圖中的Build System選擇Automatic,在sublime執行介面裡可以看到執行時間為8.4s左右,而如上圖所示,選擇Pypy,則執行時間為3.1s左右。

3.在pycharm中配置pypy並執行python

開啟pycharm,file——Settings——Project:RandomForest(RandomForest是我要新增執行環境的專案資料夾)——Project Interpreter——選擇右側的下拉框(可以看到我的pycharm只有python3.7的直譯器)——Show All——在彈出的介面左側選擇Sytem Interpreter——選擇pypy3.exe。

此時pycharm自動新增pypy3,然後關閉當前介面,出現了以下介面。可能介面裡面的列表是空白的,那麼下面會有一行小字並跟有操作提示,點選操作按鈕,則出現以下第二個介面。最後OK即可。

關閉上面的介面後,可能當前python檔案的執行按鈕是灰的,此時重新點選一下檔案,執行按鈕就會變綠了。

由於pycharm中沒有執行時間顯示,因此在上面的程式碼中加入時間顯示:

import time
t = time.time()#程式起始時間
def foo(a, b):
	k = 0
	for i in range(a, b):
		k += i
	return k

print(foo(1, 100000000))
print (time.time() - t)# 輸出程式執行結束時消耗時間

則使用pycharm自帶的直譯器,執行時間在8.8秒左右,而在pypy中,執行時間為2.9s左右。

4.給pypy安裝第三方庫

使用windows+R開啟執行框——輸入cmd字串開啟命令提示符——輸入命令:cd C:\Program Files (x86)\pypy3-v6.0.0-win32\bin進入pip所在資料夾——輸入安裝命令,如pip install lxml安裝xml擴充套件包。

cd C:\Program Files (x86)\pypy3-v6.0.0-win32\bin\  # 進入pypy下的pip路徑
pip install lxml  # 安裝xml擴充套件