最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

讓Python代碼更快運(yùn)行的5種方法

 更新時(shí)間:2015年06月21日 15:39:42   投稿:junjie  
這篇文章主要介紹了讓Python代碼更快運(yùn)行的5種方法,本文分別介紹了PyPy、Pyston、Nuitka、Cython、Numba等開源軟件,可以提升Python的運(yùn)行效率,需要的朋友可以參考下

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

PyPy

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

Pyston

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

Nuitka

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

Cython

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

Numba

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

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

相關(guān)文章

  • 使用python實(shí)現(xiàn)簡單去水印功能

    使用python實(shí)現(xiàn)簡單去水印功能

    這篇文章主要為大家詳細(xì)介紹了使用python實(shí)現(xiàn)簡單去水印功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • python遞歸函數(shù)繪制分形樹的方法

    python遞歸函數(shù)繪制分形樹的方法

    這篇文章主要為大家詳細(xì)介紹了python遞歸函數(shù)繪制分形樹的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • python實(shí)現(xiàn)動(dòng)態(tài)數(shù)組的示例代碼

    python實(shí)現(xiàn)動(dòng)態(tài)數(shù)組的示例代碼

    這篇文章主要介紹了python實(shí)現(xiàn)動(dòng)態(tài)數(shù)組的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python如何隨機(jī)生成高強(qiáng)度密碼

    python如何隨機(jī)生成高強(qiáng)度密碼

    這篇文章主要為大家詳細(xì)介紹了python隨機(jī)生成高強(qiáng)度密碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • 淺談python中的getattr函數(shù) hasattr函數(shù)

    淺談python中的getattr函數(shù) hasattr函數(shù)

    下面小編就為大家?guī)硪黄獪\談python中的getattr函數(shù) hasattr函數(shù)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • Python實(shí)現(xiàn)常見限流算法的示例代碼

    Python實(shí)現(xiàn)常見限流算法的示例代碼

    在系統(tǒng)的穩(wěn)定性設(shè)計(jì)中,需要考慮到的就是限流,避免高并發(fā)環(huán)境下一下子把服務(wù)整垮了,本文為大家整理了一些Python實(shí)現(xiàn)的常見限流算法,希望對(duì)大家有所幫助
    2024-03-03
  • 自動(dòng)化Nginx服務(wù)器的反向代理的配置方法

    自動(dòng)化Nginx服務(wù)器的反向代理的配置方法

    這篇文章主要介紹了自動(dòng)化Nginx服務(wù)器的反向代理的配置方法,反向代理是Nginx服務(wù)器的招牌功能,需要的朋友可以參考下
    2015-06-06
  • jenkins+python自動(dòng)化測試持續(xù)集成教程

    jenkins+python自動(dòng)化測試持續(xù)集成教程

    這篇文章主要介紹了jenkins+python自動(dòng)化測試持續(xù)集成教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python實(shí)現(xiàn)字典嵌套列表取值

    python實(shí)現(xiàn)字典嵌套列表取值

    今天小編就為大家分享一篇python實(shí)現(xiàn)字典嵌套列表取值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 修改Pandas的行或列的名字(重命名)

    修改Pandas的行或列的名字(重命名)

    這篇文章主要介紹了修改Pandas的行或列的名字(重命名),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12

最新評(píng)論

汤原县| 望城县| 合川市| 马鞍山市| 乌苏市| 牡丹江市| SHOW| 乐至县| 平定县| 日土县| 石嘴山市| 辽源市| 蓬安县| 石楼县| 白玉县| 鄂托克旗| 华容县| 师宗县| 哈尔滨市| 舒城县| 金湖县| 北票市| 东辽县| 公主岭市| 磐安县| 磴口县| 盐亭县| 百色市| 绵阳市| 无为县| 剑川县| 武宁县| 岑巩县| 祁阳县| 河北省| 瑞金市| 关岭| 九寨沟县| 寿光市| 平定县| 静海县|