查看: 1342|回復: 0

扣丁學堂簡述提升Python性能的項目有哪些

發表于 2018-11-9 13:37:54

  現在想要成為Python開發工程師的小伙伴不斷的增加,但是想要成為專業的Python開發工程師一定要有真才實學,本篇文章扣丁學堂給大家分享一些干貨:提升Python性能的項目,希望對大家有所幫助。

Pythonp培訓

  關于提升性能,這里有兩個選擇,有利有弊,如果讓Python在特定硬件上運行得快一點,首先,可以創建一個Python運行時的替代品,但最后卻發現是重寫了一遍CPython,或者可以重寫現存的部分代碼來利用一些性能優化的特性,缺點是程序員需要做更多的工作。
  扣丁學堂Python培訓簡述提升Python性能的項目有:
  1、Pyston
  Pyston,由Dropbox資助,使用LLVM編譯器架構來加速Python,同樣的它也使用了適時編譯。相比于PyPy,Pyston還處于早期階段,它只支持Python的部分特性。Pyston把工作分成兩個部分,一部分是語言的核心特性,另一部分是把性能提升到可接受的程度。Pyston距離可以在生產環境使用還有一段距離。在培訓Python時,多涉獵一些更深奧的項目,等你再學習簡單的知識時,掌握起來更容易。
  2、PyPy
  在CPython的替代品中,PyPy是最顯眼的那一個(比如Quora就在生產環境中使用它)。它也最有機會成為默認解釋器,它和現存Python代碼高度兼容。
  PyPy使用適時編譯來加速Python,這項技術Google也在使用,Google在V8引擎中使用它加速Javascript。最近的版本PyPy2.5增加了一些提升性能的特性,其中有一項很受歡迎,它集成了Numpy,Numpy之前也一直被用來加速Python的運行。
  使用Python3的代碼需要對應地使用PyPy3。PyPy目前只支持到Python3.2.5,對Python3.3的支持正在進行中。
  3、Nuitka
  除了替換Python運行時,有些團隊嘗試將Python代碼轉換為能夠在本地高效運行的其他語言的代碼。其中著名的項目是Nuitka--把Python代碼轉換為C++代碼--雖然運行時還是依賴Python運行時。這樣限制了它的可移植性,不過性能提升是可觀的。長期規劃中,Nuitka還準備讓C語言能夠調用Nuitka編譯的Python代碼,這樣性能提升將更加明顯。
  4、Cython
  Cython(Python的C語言擴展)是Python的超集,它能把Python代碼編譯成C代碼,并與C和C++進行交互。它可以作為Python項目的擴展使用(重新性能要求高的部分),或者單獨使用,不涉及傳統的Python代碼。缺點是你寫的不是Python,所以需要手動遷移,缺乏可移植性。
  據說,Cython提供了一些特性來讓代碼更高效,比如變量類型化,這本質上是C要求的。一些科學計算的包,如scikit-learn依賴Cython的一些特性來保持操作簡潔快速。所以在python培訓中,建議適當了解一些C語言,可以幫助對比python,也能讓你打開思路,更深入理解python。
  5、Numba
  Numba接合了上面幾個項目的想法。學習了Cython,Numba也采用了部分加速的策略,只加速CPU密集型的任務;同時它又學習了PyPy和Pyston,通過LLVM運行Python。你可以用一個裝飾器指定你要用Numba編譯的函數,Numba繼承Numpy來加速函數的執行,Numba不做適時編譯,它的代碼是預先編譯的。
  在Python培訓中,或許會認為Python慢,但Python之父曾說過,有些人感覺慢是因為沒有正確使用它。拿CPU密集型的任務來說,有多種方法可以提升性能,如使用Numpy來做計算,調用外部C代碼,以及盡量避免GIL鎖。Python之父說大部分覺得Python慢的應用都是沒有正確地使用Python。對于CPU密集型的任務有多種方法來提升性能--由于GIL鎖目前還無法被替代,所以如果要改善,許多項目還需要嘗試一些短期可行的替代方案,當然,如果使用ok的話,還可以考慮長期使用。
  想要學好Python開發技術就一定要選擇專業靠譜的Python培訓機構,扣丁學堂Python培訓不僅有專業的老師和與時俱進的課程體系,還有大量的Python視頻教程供學員觀看學習,想要學好Python的小伙伴可以登錄扣丁學堂的官網了解更多與Python有關的內容哦。

文章轉載自:扣丁學堂http://www.codingke.com/


回復

使用道具 舉報