Python為什麼能擴充套件
Python 具有高可擴充套件性,存在許多使用 C 語言或 Fortran 編寫擴充套件的方法。必要時,Python 程式碼可以直接將這些擴充套件作為子例程來呼叫。這部分討論用於構建擴充套件的一些主要編譯器(絕對不是完整列表)。
相關推薦:《》
Cython
Cython(不同於 CPython)既是指一種語言,也是指一種編譯器。Cython 語言是新增了 C 語言語法的 Python 語言的超集。Cython 可以在程式碼段或完整函式中顯式釋放 GIL。變數和類屬性上的 C 型別宣告以及對 C 函式的呼叫都使用 C 語法。其餘部分程式碼則使用 Python 語法。透過這個混合的 Cython 程式碼,Cython 編譯器可生成高效的 C 程式碼。任何定期最佳化的 C/C++ 編譯器都可以編譯此 C 程式碼,從而高度最佳化擴充套件的執行時程式碼,效能接近於原生的 C 程式碼效能。
Numba
Numba 是一個動態、即時 (JIT) 且可感知 NumPy 的 Python 編譯器。Numba 使用 LLVM 編譯器基礎架構,生成最佳化的機器程式碼和從 Python 呼叫程式碼的包裝器。與 Cython 不同,編碼使用常規的 Python 語言。Numba 可讀取來自裝飾器中所嵌入註釋的型別資訊,並最佳化程式碼。對於使用 NumPy 資料結構的程式,比如陣列以及許多數學函式,它可以實現與 C 或 Fortran 語言類似的效能。NumPy 對線性代數和矩陣函式使用硬體加速,利用 LAPACK 和 BLAS 提供額外加速,大大提升了效能,參見 IBM 部落格文章C、Julia、Python、Numba 和 Cython 在 LU 因式分解方面的速度比較。
除 CPU 以外,Numba 還能夠使用 GP-GPU 後端。Anaconda, Inc. 是 Python 某個主要發行版的幕後公司,該公司還開發了 Numba 和商業版的 Numba Pro。
Fortran to Python Interface Generator
Fortran to Python Interface Generator (F2Py) 起初為一個獨立的程式包,現在包含在 NumPy 中。F2Py 支援 Python 呼叫以 Fortran 編寫的數值例程,就好像它們是另一個 Python 模組一樣。因為 Python 直譯器無法理解 Fortran 原始碼,所以 F2Py 以動態庫檔案格式將 Fortran 編譯為本機程式碼,這是一種共享物件,包含具有 Python 模組介面的函式。因此,Python 可以直接將這些函式作為子例程來呼叫,以原生 Fortran 程式碼的速度和效能來執行。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1817/viewspace-2835885/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【JavaScript】什麼是擴充套件運算子?JavaScript套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- 使用cython擴充套件python庫套件Python
- 使用ctypes來擴充套件Python套件Python
- 擴充套件節能器:Lights Out for Mac套件Mac
- 以太坊第 2 層擴充套件是什麼?套件
- 使用 Cython 為 Python 編寫更快的 C 擴充套件Python套件
- burpsuite擴充套件開發之PythonUI套件Python
- 擴充套件c盤空間有什麼辦法套件
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- 為Unity元件編寫擴充套件Unity元件套件
- python擴充套件檔案import失敗Python套件Import
- 練習安裝Python擴充套件庫Python套件
- SpringMVC 擴充套件SpringMVC套件
- Mybatis擴充套件MyBatis套件
- 擴充套件工具套件
- Sanic 擴充套件套件
- ORACLE 擴充套件Oracle套件
- centos下為php新增gd擴充套件CentOSPHP套件
- JMeter 擴充套件開發:擴充套件 TCP 取樣器JMeter套件TCP
- 使用Kotlin擴充套件函式擴充套件Spring Data案例Kotlin套件函式Spring
- Python能幹什麼?為什麼會火?Python
- python算術運算子的擴充套件功能Python套件
- VS Code 的 Python 擴充套件有大更新Python套件
- ASP.NET Core擴充套件庫之Http通用擴充套件ASP.NET套件HTTP
- ?用Chrome擴充套件管理器, 管理你的擴充套件Chrome套件
- php怎麼安裝fileinfo擴充套件PHP套件
- 提高擴充套件性套件
- LINQ擴充套件方法套件
- HttpContext擴充套件類HTTPContext套件
- Json擴充套件方法JSON套件
- 擴充套件BSGS/exBSGS套件
- 擴充套件包上傳套件
- Flask 自建擴充套件Flask套件
- Nmap 擴充套件(四)套件
- 分類擴充套件套件
- 擴充套件表示式套件
- 新增php擴充套件PHP套件