自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Anaconda、CPython以及更多:關于各Python發(fā)行版,我們需要了解的一切

譯文
開發(fā) 后端
在本文中,我們將探討Python語言的各類運行時與發(fā)行版選項,并探討其各自適合哪些用例。

【51CTO.com快譯】在本文中,我們將探討Python語言的各類運行時與發(fā)行版選項,并探討其各自適合哪些用例。 

[[226392]]

在選擇Python語言進行軟件開發(fā)時,我們面對的實際是一套大型語言生態(tài)系統(tǒng)——其中包含各類涵蓋無數編程需求的軟件包。但除了從GUI開發(fā)到機器學習的各類庫之外,各位還能夠從多種Python運行時中作出選擇——其中部分運行時也許更適合您當前的用例條件。

下面,我們將簡單介紹目前最常用的幾款Python發(fā)行版——從標準實現(xiàn)(CPython)到針對速度進行優(yōu)化的版本(PyPy),再到特殊用例(Anaconda、ActivePython)乃至最初為完全不同的其他語言設計的運行時(Jython、IronPython)。

目錄

  • CPython
  • Anaconda Python
  • ActivePython
  • PyPy
  • Jython

一、CPython

CPython屬于Python參考實現(xiàn)方案,可算是所有其他Python衍生發(fā)行版的一套標準化版本。CPython利用C語言編寫而成,而其編寫者包含多位Python語言頂級決策層中的核心人員。

1.CPython用例

CPython屬于Python的參考實現(xiàn)版本,因為其在優(yōu)化方面表現(xiàn)得最為保守。當然,這并不是缺點,而是設計取向。Python的維護者們希望將CPython打造為Python最具廣泛兼容性與標準化的實現(xiàn)方案。

CPython最適合對Python標準的兼容性與一致性要求較高的用戶。此外,CPython同樣適用于希望以最基本方式使用Python并愿意為此放棄某些便捷性的專業(yè)人士。

舉例來說,您需要進行些許調整才能利用CPython設置虛擬環(huán)境。而其他發(fā)行版(Anaconda)則在工作區(qū)設置中提供更多自動化功能。

2.CPython的局限性

CPython并不像Python的其他版本那樣對性能作出深度優(yōu)化。其不提供原生JIT(即時)編譯器,不提供加速數學庫,也沒有用于提升性能的第三方附加選項。

您當然可以根據需求自行添加,但其并不直接提供綁定包。當然,這一切都是設計取向所決定,旨在確保CPython作為一套參考實現(xiàn)版本能夠最大程度實現(xiàn)兼容性與標準化。而性能優(yōu)化——開發(fā)人員可以選擇其他配合工具包進行添加。

此外,CPython僅提供一組用于使用Python的基準性工具。舉例來說,pip軟件包管理器會從Python原生PyPI軟件包庫當中獲取并安裝各軟件包。如果開發(fā)者允許,Pip甚至可以安裝經過預編譯的二進制文件(通過輪盤發(fā)布格式),但無法安裝PyPI所不包含的任何其他軟件包依賴項。

二、Anaconda Python

Anaconda源自Anaconda公司之手(原名為Continuum Analytics),其設計目標在于服務那些需要由商業(yè)供應商提供支持且具備企業(yè)支持服務的Python開發(fā)者。Anaconda Python的主要用例包括數學、統(tǒng)計學、工程、數據分析、機器學習以及其他相關應用。

1.Anaconda Python用例

Anaconda捆綁有Python商業(yè)與科學使用場景當中的各類常用庫——包括SciPy、NumPy以及Numba等等,同時通過一套定制化軟件包管理系統(tǒng)提供更多庫訪問能力。

Anaconda最為出色的特性在于將上述元素進行了高效組合。在安裝之后,Anaconda提供桌面應用程序Anaconda Navigator,可通過方便的GUI幫助用戶使用Anaconda環(huán)境中的各類功能。相較于CPython,Anaconda當中的組件搜索、更新以及使用流程都更為簡便。

其另一大優(yōu)勢,在于Anaconda能夠根據特定軟件包的需求處理Python生態(tài)系統(tǒng)之外的組件。其中專門為Anaconda打造的conda軟件包管理器能夠根據外部軟件要求安裝Python以及第三方軟件包。

2.Anaconda Python的局限性

由于Anaconda當中包含大量實用性庫,且只需要簡單操作即可安裝更多庫,因此Anaconda的安裝體積往往要比CPython大得多?;綜Python安裝運行大約需要100 MB空間,而Anaconda則會很快增長至GB級別。如果您的資源有限,那么這有可能產生問題。

幫助Anaconda瘦身的方法之一在于安裝Miniconda,這是一套精簡版本的Anaconda,其中只包含啟動與運行所必需的部分。如果必要,您可以將軟件包添加到Miniconda當中,并關注各軟件包具體要消耗多少空間。

三、ActivePython

與Anaconda類似,ActivePython同樣由營利性企業(yè)創(chuàng)建及維護——ActiveState公司。該公司還在銷售多種語言運行時以及多語言Komodo IDE。

1.ActivePython用例

ActivePython主要面向企業(yè)用戶與數據科學家——即希望使用Python語言,但又不愿把大量精力浪費在Python的組裝與管理方面。ActivePython使用Python中的常規(guī)pip軟件包管理器,但同時亦以認證壓縮包的形式提供數百套通用庫,外加英特爾數學核心庫等其他一些具有第三方依賴關系的公共庫。

2.ActivePython的局限性

ActivePython對軟件包外部依賴關系的處理方式存在一大潛在缺點。如果大家希望將現(xiàn)有項目(例如TensorFlow)升級至具有復雜依賴關系的較新版本,則需要同時升級ActivePython。如果開發(fā)工作在與特定版本的項目相關聯(lián)的環(huán)境中進行,那么這并不會造成影響。但目前的開發(fā)工作往往需要緊跟前沿版本的發(fā)布,在這種情況下大家往往會遇到很多麻煩。

四、PyPy

 PyPy 屬于CPython解釋器的替代品,其利用即時(JIT)編譯以加速Python程序的執(zhí)行。根據實際執(zhí)行的任務情況,其性能提升可能非常顯著。

1.PyPy用例

人們對于Python——特別是CPython的抱怨之聲,主要圍繞其速度表現(xiàn)展開。在默認情況下,Python的運行速度遠不及C語言——差距甚至可能達到數百倍。PyPy JIT將Python代碼編譯為機器語言,從而帶來平均7.7倍于CPython的運行速度。在某些特定任務中,其提速效果能夠達到50倍。

更重要的是,開發(fā)人員能夠較為輕松地享受到這些便利。將CPython換成PyPy,您就基本完成了提速工作。

2.PyPy的局限性

PyPy一般更適用于處理“純”Python應用程序。由于PyPy會模擬CPYthon的原生二進制接口,因此在處理NumPy等包含C庫接口的Python軟件包時,其表現(xiàn)并不理想。不過隨著時間推移,PyPy的開發(fā)者們已經逐步解決了這個問題,并使得PyPy能夠更好地同依賴于C擴展的Python軟件包進行兼容。但必須承認,雖然已經有所改善,PyPy對C擴展的支持仍然有限。

PyPy的另一大短板在于運行時大小。Windows上的核心CPython運行時——不包含標準庫——約為4 MB,而PyPy運行時則在32 MB左右。同樣需要注意的是,PyPy還長期立足Python的2.x分支,例如目前面向Python 3.x版本的PyPy目前只在32位Windows系統(tǒng)上提供beta測試版本。(PyPy已經在Linux與MacOS上提供同時面向Python 2x與3.x的64位版本。)

五、Jython

JVM(Java虛擬機)能夠作為除Java之外的多種語言的運行時選項。這份長的名單包括Groovy、Scala、Clojure、Kotlin、Python以及——沒錯,當然還有Jython 。

1.Jython用例

Jython項目能夠將Python 2.x編譯為JVM字節(jié)碼,并在JVM上運行生成的程序。在某些情況下,Jython編譯的程序在運行速度上甚至高于CPython編譯程序——但并非始終如此。

Jython提供的最大優(yōu)勢在于能夠與Java生態(tài)系統(tǒng)中的其他部分直接進行互操作。Java的使用范圍比Python更為廣泛。通過在JVM上運行Python,開發(fā)人員將能夠享受并非為Python開發(fā)的龐大庫與框架生態(tài)系統(tǒng)。同樣,Jython亦允許Java開發(fā)人員使用Python庫。

2.Jython的局限性

Jython最大的弊端在于其僅支持Python的2.x版本。目前對Python 3.x版本的支持能力尚在開發(fā)當中,但仍需要相當一段時間。當下,還沒有任何相關版本放出。

同樣需要注意的是,雖然Jython能夠將Python引入JVM,但卻無法將Python引入Android。由于Jython目前不具備適用于Android的端口,因此Jython不能用于開發(fā)Andoird應用。

六、IronPython

類似于Jython的JVM上Python實現(xiàn)方案定位,IronPython屬于一套立足.Net運行時——或者CLR(公共語言運行時)——的Python實現(xiàn)方案。IronPython利用CLR的DLR(動態(tài)語言運行時)以允許Python程序以等同于CPython的動態(tài)水平實現(xiàn)運行。

1.IronPython 用例

與Jython類似,IronPython同樣屬于一種橋梁。其最主要的用例在于實現(xiàn)Python與.Net間的互操作性?,F(xiàn)有.Net程序集能夠利用Python的本地導入與對象操作語法在IronPython程序中實現(xiàn)加載。

此外,我們也可以將IronPython代碼編譯成程序集,并直接運行或者接受其他語言的調用。但需要注意的是,其中的MSIL(微軟中間語言)無法直接由其他.Net語言進行訪問,因為其并不支持公共語言規(guī)范。

2.IronPython的局限性

與Jython類似,IronPython目前只支持Python 2.x版本。不過IronPython 3.x實現(xiàn)方案已經處于緊鑼密鼓的開發(fā)當中。

原文標題:Anaconda, CPython, PyPy, and more: Know your Python distributions,作者:Serdar Yegulalp 

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

責任編輯:龐桂玉 來源: 51CTO
相關推薦

2021-08-09 14:40:02

物聯(lián)網IOT智能家居

2023-12-06 14:07:56

數字孿生AI

2024-04-10 11:47:34

2023-12-29 09:50:51

智能機器人人工智能

2022-03-14 16:50:54

物聯(lián)網IoT云計算

2023-06-25 10:14:46

智能機器人人工智能

2024-08-26 11:59:35

2020-05-12 16:10:34

Wi-Fi網狀網絡網絡

2023-05-28 18:21:32

2023-03-29 21:05:03

布線結構化布線

2018-07-18 09:00:00

區(qū)塊鏈職位工作崗位

2018-09-27 18:56:25

區(qū)塊鏈

2014-04-11 11:30:39

Linux發(fā)行版

2021-08-06 06:51:15

TypeScript Any 類型

2020-05-12 10:43:24

物聯(lián)網數據技術

2020-04-21 14:49:35

物聯(lián)網數據技術

2015-08-05 09:20:49

LinuxWindows 10

2023-08-11 08:00:00

人工智能Keras 3.0

2021-05-28 07:12:59

Python閉包函數

2020-09-11 10:55:10

useState組件前端
點贊
收藏

51CTO技術棧公眾號