pypy介紹

在做python開發的人,應該或多或少的聽說過一點pypy吧。我猜。所以就不做背景介紹了,有不懂的同學可以看看這里:

1、什么是pypy: http://www.360doc.com/content/15/0625/08/13232598_480502243.shtml (簡單總結一下就是:pypy是一種python的解釋器,比標準的cPython要快很多。但是并不支持所有的cPython庫,有一些特殊的包用不了)

2、為什么pypy比python快: https://www.zhihu.com/question/19588346 (簡單的總結一下就是:有個東西叫JIT,可以動態編譯)

這里只是簡單介紹一下如何安裝及使用。百度了一下資料有點殘(當然也可能是因為百度比較殘),還是把自己使用的過程記錄一下。

pypy官網 http://pypy.org/ 里面有各種版本,有源碼,編譯好的二進制,還有適合不同操作系統的。建議下載帶JIT的版本(廢話,要不然用pypy干嘛)。奇葩的是我這里下載不了,就找同事要了一份編譯好的版本。放在某目錄中,假設此目錄名為{pypy_dir},進入{pypy_dir}/bin/目錄之后,用 ln -s 命令在/usr/bin中建立一個軟鏈接。這樣就可以把pypy當做命令來使用了。如果是源碼版本,目錄中有makefile文件,可以直接sudo make & make install。這樣就算安裝好了(理論上源碼是這樣安裝的啊,不過我并沒有實際嘗試)。

可以寫個程序來測一下速度:

import time
t = time.time() 
for i in xrange(10**8): 
    continue
print time.time() - t

用cpython來測試,用時5.41043996811s,而pypy測試用時只有0.337416887283s。

。。。我似乎忘了一件重要的事:pypy的程序跟一般的python是一樣的,代碼不需要有什么改動。執行的時候,標準python用python xxx.py來執行,而pypy用pypy xxx.py就好了,沒有區別。

效果截圖:

image

但是,僅僅執行標準python是遠遠不夠的。python本身有個非常大的優勢就是第三方庫,想要什么幾乎都有人寫好了,為pypy的速度而拋棄這樣的資源有點可惜。那么在pypy下能使用第三方庫嗎?當然能,不過pypy跟python是相互獨立的,python中安裝好的庫在pypy中是不能使用的。so,我們需要安裝pypy版本的pip。網上找到一份代碼,可以方便的執行安裝,我把它存在了我的github上: https://github.com/anpengapple/pypy_get_pip (由于代碼比較大,上M了,github上沒法顯示,可以下載下來看)。只需要這段pypy代碼,用 pypy get-pip.py 來執行,就可以安裝setuptools,pip等工具了。裝好之后可以看到{pypy_dir}/bin目錄中多了pip等幾個可執行文件。

現在就可以使用 {pypy_dir}/bin/pip install xxx 來安裝第三方庫了。需要注意的是,第三方庫并不能完全支持。不過大部分都是可以的。至少我現在用到的dnslib,pydns,gevent都沒有問題。而我的DNS服務器也因為pypy而順利的速度提升了4倍。

本文原創地址:http://www.cnblogs.com/anpengapple/

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容