亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

讓Python代碼更快運行的5種方法

系統 1762 0

不論什么語言,我們都需要注意性能優化問題,提高執行效率。選擇了腳本語言就要忍受其速度,這句話在某種程度上說明了Python作為腳本語言的不足之處,那就是執行效率和性能不夠亮。盡管Python從未如C和Java一般快速,但是不少Python項目都處于開發語言領先位置。
Python很簡單易用,但大多數人使用Python都知道在處理密集型cpu工作時,它的數量級依然低于C、Java和JavaScript。但不少第三方不愿贅述Python的優點,而是決定自內而外提高其性能。如果你想讓Python在同一硬件上運行得更快,你有兩個基本選擇,而每個都會有一個缺點:
?您可以創建一個默認運行時所使用的替代語言(CPython的實現)――一個主要的任務,但它最終只會是CPython的一個簡易替代者。
?您也可以利用某些速度優化器重寫現有Python代碼,這意味著程序員要花更多精力編寫代碼,但不需要在運行時加以改變。
如何進行Python性能優化,是本文探討的主題。下面是五個方法可以在某些方面提高Python代碼的性能和執行效率。

PyPy

在選擇CPython的簡易替代語言時,PyPy無疑是最佳之選(如Quora就是由它編寫而成)。由于與現有Python代碼保持高度兼容性,PyPy也是默認程序運行時的一個很好選擇。
PyPy使用了Just-in-Time(JIT)即時編譯器,即動態編譯器,與靜態編譯器(如gcc,java等)不同,它是利用程序運行的過程的數據進行優化,擁有同谷歌Chrome V8 JavaScript引擎相同的語言加速技術。本月初,最新版本PyPy 2.5即將發布,此版本會有一系列的性能改進,提供更全面的如NumPy的支持,用于加速Python性能的共享庫。
Python 3.x必須由單獨的PyPy3項目構建而成。不過,對于邊緣語言特性 愛好者來說,盡管預期支持3.3,但實際此版本最多僅支持Python3.2.4及以下版本。
相關鏈接:http://pypy.org/

Pyston

Pyston是一款Dropbox推出的新的基于JIT的Python實現,使用LLVM編譯器實現代碼解析與轉換。與PyPy相比,Pyston仍處于初級階段,目前最新版本為Pyston 0.2版,支持有限子集語言的相關特性。Pyston的主要工作包括支持語言的核心功能及提升關鍵指標性能到一個可接受的水平。不久后,Pyston就可以被認為是遠程生產就緒語言。
相關鏈接:https://github.com/dropbox/pyston

Nuitka

Nuitka 是一個Python的替代品,一些團隊正用它做完全的Python編譯工具,并嘗試將Python代碼轉譯為其它可高速運行的編程語言。Nuitka(nuitka.net)可以將python代碼轉換為C++代碼,然后編譯為可執行文件,并通過直接調用python的api的方式實現從解析語言到編譯語言的轉換,并且在轉換到C++的過程中直接使用python的解釋器,可以保證100%的語法兼容。雖然這限制了它的可移植性,但不可否認這個轉換的速度獲得了肯定。
相關鏈接:http://nuitka.net/

Cython

Cython是Python 的C語言擴展。準確說Cython是單獨的一門語言,專門用來寫在Python里面import用的擴展庫。實際上Cython的語法基本上跟Python一致,而Cython有專門的編譯器:先將 Cython代碼轉變成C(自動加入了一大堆的C-Python API),然后使用C編譯器編譯出最終的Python可調用的模塊。不過Cython的缺點是,你并不能真正編寫Python代碼,這樣一來,現有代碼將不會完全自動轉移成功。
也就是說,Cython在提速方面有很大優勢,它是一個用來快速生成Python擴展模塊(extention module)的工具。而在Cython,C里的類型,如int,float,long,char*等都會在必要的時候自動轉成python對象,或者從python對象轉成C類型,在轉換失敗時會拋出異常,這正是Cython最神奇的地方。另外,Cython對回調函數的支持也很好。總之,如果你有寫python擴展模塊的需求,那么Cython真的是一個很好的工具。
相關鏈接:http://cython.org/

Numba

Numba綜合了前兩種方法,是Cython的競爭項目。同樣的,numba把Python源碼通過LLVMPy生成JIT后的.so文件來加速。不同點在于,Numba是以JIT為主的,加速對源碼的侵入性較小。而Cython則重點在加速高性能Python模塊的開發上,不依賴LLVMPy項目。此外numba還很不成熟,目前兼容性相當差。
相關鏈接:http://numba.pydata.org/

Python創始人Guido van Rossum堅信Python的許多性能問題可以歸結為語言的使用不當。例如,對于CPU消耗過高的處理,可以通過一些方法來加速Python運行――使用NumPy、使用多處理器擴展、或借助外部C代碼從而避免全局解釋器鎖(GIL)――Python緩慢的根源。但由于在Python中還沒有可行的GIL替代語言,Python仍將在短期落后于其他語言――甚至可能更長時間。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 色综合久久综合欧美综合图片 | 一区二区不卡不卡一卡 | 91精品国产麻豆国产自产在线 | 国产精品久久久久一区二区 | 91精品成人福利在线播放 | 91中文字幕在线视频 | 神马手机不卡影院 | 欧美又乱又伦观看 | 亚洲欧美日韩中文字幕在线 | 老黄网站 | 热久久免费视频 | 老司机久久影院 | 国产成人丝袜网站在线观看 | 九九亚洲精品 | 免费国产午夜在线观看 | 深夜视频在线免费 | 国产精品一区二区久久精品 | 99精品久久久久久久 | 日本一级特黄视频 | 综合亚洲精品一区二区三区 | 亚洲欧洲日产国码天堂 | 国产精品1区 | 色综合久久夜色精品国产 | 亚洲 在线播放 | 国产精品原创永久在线观看 | 九九精品国产兔费观看久久 | 免费久久 | 欧美成人xxxxxxxx在线 | 久久综合一区二区三区 | 欧美性xxxxbbbb | 在线中文字幕亚洲 | 国产精品夜色7777青苹果 | 99精品日韩 | 久久r这里只有精品 | 国产在线一区二区 | 欧美大片a一级毛片视频 | 亚洲天堂一区在线 | 久久com| 午夜欧美| 国产一区欧美二区 | 亚洲酒色1314狠狠做 |