新聞中心
由Guido van Rossum于1991年創(chuàng)建的Python,如今已是發(fā)展最快、使用最廣的編程語言之一。它可以在諸如:Web應(yīng)用、桌面開發(fā)、機器學(xué)習(xí)、人工智能、數(shù)據(jù)分析、以及數(shù)據(jù)可視化等領(lǐng)域,得到廣泛的使用。

成都創(chuàng)新互聯(lián)是網(wǎng)站建設(shè)專家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,專業(yè)領(lǐng)域包括成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、電商網(wǎng)站制作開發(fā)、微信平臺小程序開發(fā)、微信營銷、系統(tǒng)平臺開發(fā),與其他網(wǎng)站設(shè)計及系統(tǒng)開發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!
值得注意的是,近年來,隨著Python生態(tài)系統(tǒng)的不斷發(fā)展壯大,業(yè)界出現(xiàn)了許多代碼庫、框架、以及編譯器,可用來加速Python,克服其應(yīng)用限制,甚至能夠?qū)ython與其他編程語言(如:Java、C、C++、JavaScript 等)協(xié)同使用。本文將向您介紹十種可用于將Python代碼,按需編譯為指定輸出格式,以充分釋放Python代碼潛能的優(yōu)秀編譯器。
總的說來,目前由官方提供的、使用最廣泛的當(dāng)屬CPython。當(dāng)我們從官網(wǎng)處下載并使用Python時,CPython就是默認(rèn)的編譯處理器。當(dāng)然,在不同的領(lǐng)域和需求場景中,開發(fā)人員還會用到Jython、Brython、PyPy、Skulpt、IronPython、PyJs、Nuitka、WinPython等編譯器。
CPython
作為Python的原配編譯器,CPython是Python語言規(guī)范的參考實現(xiàn)。因此,它往往能夠最先獲得Python語言的所有最新、最強的功能。顧名思義,它是由純粹的C語言編寫而成。當(dāng)然,您不但可以從Python代碼中調(diào)用C源代碼的函數(shù),還可以直接在Python中使用大量現(xiàn)有的C代碼庫。
值得注意的是,由于CPython在運行時解釋的是字節(jié)碼(bytecode),因此它在每個進程上都會使用全局解釋器鎖 (global interpreter lock,GIL),以確保在同一時刻,只有一個線程正在解釋字節(jié)碼。
當(dāng)我們調(diào)用CPython時,那些在.py文件中編寫好的源代碼,首先會被自動編譯成包含了Python字節(jié)碼的.pyc文件,然后在經(jīng)由PVM(Python虛擬機)進行解釋。可見,CPython其實是編譯器和解釋器的結(jié)合,而不像C語言那樣,可以直接將源代碼,編譯成為帶有CPU指令的二進制機器碼。
對于所有學(xué)生和初學(xué)者而言,CPython可以作為您開始Python編程之旅的第一步。當(dāng)然,他們也可以使用其他編譯器,讓不同的編程語言與Python混合使用,去實現(xiàn)更多的特定開發(fā)需求。例如,下文將提到的Jython,會混合Java和Python代碼,利用現(xiàn)有的Java和Python庫,將代碼轉(zhuǎn)換為Java字節(jié)碼,以實現(xiàn)在JVM上運行Python。
Brython
作為JavaScript的“替代品”,Brython可用于在瀏覽器中運行包含了Python 3腳本的Web應(yīng)用。也就是說,開發(fā)者只需要在那些運行著Python腳本的網(wǎng)頁上,包含brython.js即可。此處的brython.js是一種能夠在頁面上查找Python腳本,并通過Python代碼,以執(zhí)行JavaScript各項操作的引擎。
Python
上面的代碼段展示了,在包含了brython.js之后,您可以使用腳本類型text/python,來添加Python腳本,并通過Python代碼,像JavaScript那樣去操作 DOM。
同時,您還可以進行Ajax的各種調(diào)用,并訪問本地的文件系統(tǒng)。當(dāng)然,您也可以在基于Brython的Python腳本中,包含各種現(xiàn)有的JavaScript庫和框架,其中包括: Highcharts、vue.js、以及three.js等。
PyPy Python
雖然CPython是在Python中使用最廣泛的編譯器,但它并不是最快的一種。能夠支持Python 2和Python 3核心語言規(guī)范的PyPy,可以替代默認(rèn)的Python實現(xiàn)。
在CPython中,字節(jié)碼在運行時被解釋,因此性能有所下降。而PyPy采用的是即時(just-in-time,JIT)的編譯概念。它在代碼執(zhí)行之前,就直接編譯為機器代碼,因此其執(zhí)行速度提高了接近4倍。
值得注意的是,Python代碼需要執(zhí)行大量耗時處理的進程時,PyPy的速度優(yōu)勢會比較明顯。而對于耗時較短的進程,JIT編譯器本身則可能消耗更多的時間,并抵消整體的速度優(yōu)勢。
Jython或JPython
作為使用率第二高的一種Python實現(xiàn),Jython最初被稱為JPython。它是通過Python語言來實現(xiàn)Java虛擬機的。
開發(fā)者既可以將現(xiàn)有的Java包和代碼庫,導(dǎo)入自己的Python程序中,又可以在Java程序中嵌入Python腳本。無論是哪種方式,Jython編譯器都會將帶有Java和Python的整體代碼組合,并編譯成為可以在JVM上運行的字節(jié)碼。
正是由于運行在JVM上,因此您可以在諸如:Windows、Linux、macOS、FreeBSD、以及Solaris等,幾乎所有的平臺上創(chuàng)建Jython項目。
Cython
Cython與CPython不同,它更像是一個超集,允許開發(fā)者在代碼中結(jié)合C和Python,從而生成C語言代碼類型的輸出,以供任何一種C/C++編譯器進行后續(xù)編譯。
可以說,Cython兼顧了C語言的速度、Python的靈活性,并且可以作為用Python編寫C擴展的強大工具。下面是有關(guān)Cython的重要說明:
- 開發(fā)者可以在Python代碼中使用靜態(tài)類型的聲明
- 可以調(diào)試使用由Cython、Python和C編寫的混合源代碼
- 可以使用現(xiàn)有庫(如:NumPy、SciPy、以及CPython生態(tài)系統(tǒng)中的其他庫),去構(gòu)建高性能的應(yīng)用
如果說使用CPython可以為您提供解釋字節(jié)碼的速度,那么使用Cython則能夠為您提供預(yù)編譯為機器原生代碼的速度。
Skulpt
Skulpt是由Graham Scott創(chuàng)建的一個實驗項目,其流行的速度非常快。作為Python在瀏覽器內(nèi)的一種實現(xiàn),Skulpt的主要目的是提供一種良好的在線式Python編譯器。當(dāng)然它也可以通過讓W(xué)eb應(yīng)用引擎包含Skulpt,以方便開發(fā)者編寫出被用于前端的Python腳本。
值得一提的是,Skulpt會先將Python代碼轉(zhuǎn)換為JavaScript,然后在瀏覽器中執(zhí)行相應(yīng)的代碼。
Nuitka
由Kay Hayen開發(fā)和維護的Nuitka,是另一個用Python編寫的編譯器。雖然仍處于反復(fù)迭代之中,但它已經(jīng)對默認(rèn)的CPython實現(xiàn)進行了運行時(run-time)上的改進。
目前,Nuitka的工作原理是將Python代碼編譯為C語言代碼,并利用libPython進行最終執(zhí)行。當(dāng)然,Nuitka的最終計劃是將其替換為原始的純C語言的數(shù)據(jù)類型,而不必再去借用libpython。
注意,Nuitka可以在Apache的許可證下免費被使用,并且可以在Linux、Windows、macOS、以及其他平臺上被設(shè)置使用。
IronPython
于2006年首發(fā)的IronPython,是.NET框架的Python實現(xiàn)。它支持.NET core和.NET Standard,可以運行在Windows、macOS和Linux平臺上。IronPython之于.NET Framework,就像Jython之于Java。
借助IronPython,開發(fā)者可以使用所有的Python庫、.NET Framework、以及.NET支持的所有語言(如C#)。正是由于IronPython是用C #編寫的,因此如果您具有.NET的背景,則可以使用Python擴展工具,輕松地為Python設(shè)置VS代碼。當(dāng)然,您可以根據(jù)Apache許可證,免費使用該編譯器。
PyJS
PyJS是另一款完全用Python,而非JavaScript或HTML去開發(fā)Web應(yīng)用的編譯工具。在后臺,PyJS會在使用內(nèi)置的Ajax框架之前,將Python代碼編譯為JavaScript。
同時,PyJS帶有一個桌面版本,以便您能夠在桌面上運行被開發(fā)應(yīng)用的,功能相對應(yīng)的Web版本。
WinPython
WinPython是Python的“即用型”發(fā)行版。也就是說,用戶無需任何安裝,即可在Windows PC上運行。作為另一種Python的實現(xiàn),WinPython編譯器不僅帶來了Python執(zhí)行環(huán)境,而且還包含了諸如:Scipy、Numpy、以及Pandas等各種Python庫。
WinPython的特點在于,它既是面向數(shù)據(jù)科學(xué)家的全功能性科學(xué)環(huán)境,又是面向?qū)W生和初學(xué)者的便捷工具。
Transcrypt
Transcrypt更像是一個從Python到JavaScript的轉(zhuǎn)換器。也就是說,您可以使用Transcrypt將自己的Python代碼轉(zhuǎn)換為JavaScript。據(jù)此,您可以在Web應(yīng)用或Node.js服務(wù)器中,使用已編譯的代碼,作為服務(wù)器端的應(yīng)用程序。
通常,Transcrypt會生成可讀的JavaScript,您可以使用源映射(source maps)和Python源代碼,對其進行調(diào)試。同時,您還可以從該工具中獲得minifier、靜態(tài)類型驗證器、以及帶有Typescript的linter。
小結(jié)
上述介紹的十種編譯器,大多能夠使開發(fā)人員在自己的項目中混合、或匹配多種語言。當(dāng)然,您也可以從如下方面,去選擇恰當(dāng)?shù)腜ython編譯器:
- 需要利用其他編程語言的現(xiàn)有代碼庫。
- 缺乏Java、JavaScript、C、甚至Python中某一方面的技能。
- 需加速執(zhí)行Python的運行時。
標(biāo)題名稱:適合開發(fā)者的十大優(yōu)秀Python編譯器
文章起源:http://fisionsoft.com.cn/article/dhcpiei.html


咨詢
建站咨詢
