一份可以令 Python 變快的工具清單_第1頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、一份可以令 python 變快的工具清單無論什么時候,軟件的性能提升都是軟件開發(fā)重要的一步,假如你只想做一個一般的碼農(nóng),大可不必理睬,但是要想提升能力,軟件性能的討論是一個跨不過去的坎,不管是新的分布式高并發(fā)框架學(xué)習(xí),還是新的算法學(xué)習(xí),以及代碼重構(gòu)等都是提升性能的一種手段。 固然今日在這里不講那些大而高深的學(xué)問,給大家共享一些提升軟件性能的優(yōu)化代碼的工具,使其讓代碼越發(fā)的簡潔和快速,固然這么工具無法替代算法設(shè)計,但是也能讓python加速無數(shù)倍。 1.numpy、scipy、sage和pandas numpy的核心是一個多維數(shù)字數(shù)組的實現(xiàn)。并且除了這個數(shù)據(jù)結(jié)構(gòu)之外,還實現(xiàn)了若干個函數(shù)和運算符,

2、使其支持高效的數(shù)組運算。并且精簡了被調(diào)用的次數(shù),以便于被用來舉行極其高效的數(shù)學(xué)運算。 scipy和sage可以說是一個整合工具,內(nèi)置了numpy外還內(nèi)置了許多其他的不同的工具,從而使其可以用于特定科學(xué)、數(shù)學(xué)和高性能計算的模塊。 pandas則是一個側(cè)重于數(shù)據(jù)分析的工具。假如需要處理大量半結(jié)構(gòu)化的數(shù)據(jù),也可能會用到pandas相關(guān)的工具,比如blaze。 2.pypy、pyston、parakeet、psyco 我們知道讓代碼運行的更快并且侵入性最小的就是用法實時編譯器(jit編譯)。在以前我們可以安裝psyco,然后調(diào)用其psyco.full()的函數(shù),代碼運行速度顯然提升。 然而現(xiàn)如今許多p

3、syco項目已經(jīng)停止了維護,不過類似的功能卻在pypy中得以繼承。 pypy為了便利分析、優(yōu)化和翻譯,用法python語言將python重新實現(xiàn)了一遍,這樣就可以jit編譯。而且pypy可以挺直將代碼翻譯成像c那樣的性能更高的語言。 此外還有一個pyston,但到現(xiàn)在還有無數(shù)不完美的地方。它是一個與llvm平臺較為臨近的python的jit編譯器,并且無數(shù)時候已經(jīng)優(yōu)于python的實現(xiàn)。 3.gpulib、pystream、pycuda和pyopencl 這四個的作用都是用來處理圖像單元以實現(xiàn)加速代碼的作用,并且相較于代碼優(yōu)化從軟件層動身,他們是從硬件層面上舉行加速,假如你的電腦有一個強大的g

4、pu,我們徹低可以用法gpu來舉行計算,以此削減cpu的珍貴資源。 4.pyrex、cython、numba和shedskin 這四個項目都致力于將python代碼翻譯為c、c+和llvm的代碼。shedskin能夠?qū)⒋a編譯為c+語言。pyrex和cython主要目的是將python代碼編譯為c語言。cython也是pyrex的一個分支。而且cython還有numpy數(shù)組的額外支持。 5.swig、f2py和boost.python 這些工具可以將其他的語言封裝為python的模塊。第一個可以封裝c/c+語言。f2py可以封裝fortran。boost.python可以封裝c+語言。 sui

5、g只要啟動一個指令行工具,往里面輸入c或者c+的頭文件,封裝器代碼就會自動生成。除了python,而且可以成為其他語言的封裝器,比如java和php。 6.ctypes、llvm-py和corepy2 這些模塊可以協(xié)助我們實現(xiàn)python底層對象的操作。ctypes模塊可以用于在內(nèi)存中構(gòu)建編譯c的對象。并且調(diào)用分享庫中的c的函數(shù)。不過ctypes已經(jīng)包含在python的標準庫里面了。 llvm-py主要提供llvm的python接口。以便于構(gòu)建代碼,然后編譯他們。也可以在python中構(gòu)建它的編譯器。固然搞出自己編程語言也是可以的。 corepy2也可以舉行加速,不過這個加速是運行在匯編層的。 7.weave、cinpy和pyinline 這三個包,就可以讓我們在python代碼中挺直用法c語言或者其他的高級語言。混合代碼,依舊可以保持干凈??梢杂梅╬ython代碼的字符串的多行特性,可以使其他的代碼根據(jù)自身的風(fēng)格來舉行排版。 8.其他工具 假如我們要節(jié)約內(nèi)存,就不能用法jit了。普通jit都太耗費內(nèi)存。有一句話說的很對,時光和內(nèi)存常常不能兼得,而我們在工程開發(fā)中,總是要尋覓他們的平衡點。 至于其他的一些東西,比如m

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論