導航:首頁 > 源碼編譯 > 修改Cpython源碼編譯

修改Cpython源碼編譯

發布時間:2022-05-12 17:08:58

1. python編譯器推薦

1、CPython
是Python語言規范的參考實現,能夠優先獲得Python語言的最新、最強的功能,CPython是由C語言編寫而成,不但可以從Python代碼中調用C代碼的函數,還可以直接在Python中使用大量現有的C代碼庫。
2、Brython
Brython可用於在瀏覽器中運行包含了Python 3腳本的Web應用。
3、PyPy Python
雖然第一個推薦的是在Python中使用最廣泛的編譯器,但卻不是最快的,PyPy採用的是即時的編譯概念,在代碼執行前,就直接編譯為機器代碼,因此其執行速度提高了近4倍。
4、Jython或JPython
使用率第二高,Jython最初被稱為JPython,是通過Python語言來實現java虛擬機的,開發者既可以將現有的Java包和代碼庫,導入自己的Python程序中,還可以在Java程序中嵌入Python腳本。
5、Cython
Cython與CPython不同,更像是一個超集,允許開發者在代碼中結合C和Python,從而生成C語言代碼類型的輸出,以供任何一種C/C++編譯器進行後續編譯。
6、Skulpt
流行的速度非常快,主要目的是提供一種良好的在線式Python編譯器,也可以通過讓Web應用引擎包含Skulpt,以方便開發者編寫出被用於前端的Python腳本。
7、PyJS
是另一款完全用Python去開發Web應用的編譯工具,在後台,PyJS會在使用內置的Ajax框架之前,將Python代碼編譯為JavaScript。
8、WinPython
是Python的"即用型"發行版,也就意味著用戶無需安裝,即可在Windows
PC上運行,作為另一種Python的實現,WinPython編譯器不僅帶來了Python執行環境,而且還包含了諸如:Scipy、Numpy、以及Pandas等各種Python庫。

2. C/C++,Java,Python誰是編譯型語言,誰是解釋型語言

總的來說,如今編譯型語言、解釋性語言的分界線不再那麼明顯,應該避免把語言簡單歸類為「編譯型」和「解釋型」。
我們最開始說C/C++是編譯型語言,原因是相對於Ruby這樣的解釋性語言,C/C++需要通過編譯器,把源代碼編譯成中間文件(.o和.obj),然後通過連接器和匯編器生成機器碼,即一系列基本操作序列,可以直接讓計算機執行。這些機器碼也就是我們通常的exe文件。
我們以Ruby為例談一下解釋型的語言,程序從源代碼到被計算機執行,也要經歷上述步驟。不同的地方在於,C/C++會把那些從源代碼「變」來的機器碼(即exe文件)保存起來,而Ruby直接將這些生成的基本操作序列(Ruby虛擬機)指令丟給Ruby虛擬機執行然後產生動作了。這就是我們所說的解釋型語言。
所以我們看到的現象是,編譯型語言要先編譯再運行,而解釋性語言直接「運行」源代碼。
回到最開始的問題,如果以是「否保存機器碼為exe文件」為區分,那麼Java和Python都屬於解釋型語言。
但具體來講,Java和Python是有很大不同的。Java代碼從源程序到執行,要經過的過程是:編譯器(javac)把源代碼轉化為位元組碼,然後解釋器(Java.exe)把位元組碼轉換為計算機理解的機器碼來執行,其過程中沒有把「機器碼保存為exe」的行為(這樣講也不完全准確,下面會講到)。其中編譯器和解釋器都是Java虛擬機(JVM)的一部分,由於針對不同的硬體與OS,Java解釋器有所不同,因此可以實現「一次編譯、到處執行」。所以JVM是Java跨平台特性的關鍵所在。
Java虛擬機(JVM)一種用於計算機設備的規范,可用不同的方式(軟體或硬體)加以實現。編譯虛擬機的指令集與編譯微處理器的指令集非常類似。Java虛擬機包括一套位元組碼指令集、一組寄存器、一個棧、一個垃圾回收堆和一個存儲方法域
對於Python,其源代碼到執行也要經過如下過程:源代碼--->位元組碼--->機器碼。跟Java相同的是,其過程中也沒有把「機器碼保存為exe」的行為。與Java不同的是,Python使用的虛擬機是基於其他語言實現的,比如我們一般使用的Python實際為Cpython,也就是其虛擬機由C實現,這個虛擬機負責把Python源碼編譯為位元組碼,再解釋執行。另外,還有Jypython、Ironpython等。

3. CPython解釋器是什麼意思如何安裝

將Python源代碼翻譯為位元組碼的程序稱為Python解釋器,CPython是一個用C編寫的Python解釋器,它也是Python自帶的解釋器,包含在Python安裝程序中。

4. 用 CPython寫的python代碼能否用JPython解釋器解釋

絕大部分可以,語法差不多,只是底層解釋不同罷了。不過JPython寫的代碼不一定能在cpython下解釋執行,因為JPython中可能會用到JDK中的東西,必須在JVM下執行,這算是JPython對CPython的優勢吧,就是能調用Java,在JVM上解釋執行。

5. JAVA,Python代碼是編譯執行還是解釋執行

Java是編譯執行和解釋執行都可以,Python是解釋執行

6. Python的幾種實現

Python自身作為一門編程語言,它有多種實現。這里的實現指的是符合Python語言規范的Python解釋程序以及標准庫等。這些實現雖然實現的是同一種語言,但是彼此之間,特別是與CPython之間還是有些差別的。
下面分別列出幾個主要的實現。
1.CPython:這是Python的官方版本,使用C語言實現,使用最為廣泛,新的語言特性一般也最先出現在這里。
CPython實現會將源文件(py文件)轉換成位元組碼文件(pyc文件),然後運行在Python虛擬機上。
2.J
ython:這是Python的Java實現,相比於CPython,它與Java語言之間的互操作性要遠遠高於CPython和C語言之間的互操作性。
在Python中可以直接使用Java代碼庫,這使得使用Python可以方便地為Java程序寫測試代碼,更進一步,可以在Python中使用Swing等圖形庫編寫GUI程序。
Jython會將Python代碼動態編譯成Java位元組碼,然後在JVM上運行轉換後的程序,這意味著此時Python程序與Java程序沒有區別,只是源代碼不一樣。
在Python 中寫一個類,像使用Java 類一樣使用這個類是很容易的事情。
你甚至可以把Jython 腳本靜態地編譯為Java 位元組碼。
示例代碼:fromjava.langimportSystemSystem.out.write('Hello World!
')
3.Python for .NET:它實質上是CPython實現的
.NET託管版本,它與.NET庫和程序代碼有很好的互操作性。4.
IronPython:不同於Python for .NET,它是Python的C#實現,並且它將Python代碼編譯成C#中間代碼(與Jython類似),然後運行,它與.NET語言的互操作性也非常好。5.
PyPy:Python的Python實現版本,原理是這樣的,PyPy運行在CPython(或者其它實現)之上,用戶程序運行在PyPy之上。它的一個目標是成為Python語言自身的試驗場,因為可以很容易地修改PyPy解釋器的實現(因為它是使用Python寫的)。6.
Stackless:CPython的一個局限就是每個Python函數調用都會產生一個C函數調用。這意味著同時產生的函數調用是有限制的,因此Python難以實現用戶級的線程庫和復雜遞歸應用。一旦超越這個限制,程序就會崩潰。Stackless的Python實現突破了這個限制,一個C棧幀可以擁有任意數量的Python棧幀。這樣你就能夠擁有幾乎無窮的函數調用,並能支持巨大數量的線程。Stackless唯一的問題就是它要對現有的CPython解釋器做重大修改。所以它幾乎是一個獨立的分支。另一個名為Greenlets的項目也支持微線程。它是一個標準的C擴展,因此不需要對標准Python解釋器做任何修改。
下面的這篇文章對Stackless做了比較多的介紹,但是也比較難以讀懂:
可愛的 Python:Python實現內幕

7. Python 代碼例子,怎樣編譯成.py文件

直截復制保存到文本文件中就行,然後把文件擴展文改為.py。
要注意縮進,python代碼是靠 縮進 確定代碼層次關系的。

8. python代碼運行需要編譯嗎

有人在討論 Python 代碼是編譯執行還是解釋執行?這個問題還可以換一種說法: Python 是編譯型語言還是解釋型語言?回答這個問題

前,我們先弄清楚什麼是編譯型語言,什麼是解釋型語言。

所謂編譯執行就是源代碼經過編譯器編譯處理,生成目標機器碼,就是機器能直接運行的二進制代碼,下次運行時無需重新編譯。不過它

是針對特定CPU體系的,這些目標代碼只能在特定平台執行,如果這個程序需要在另外一種 CPU 上面運行,這個代碼就必須重新編譯。

它不具備可移植性,但是執行速度快,C、C++這類語言屬於編譯型語言。

而解釋型語言是在代碼運行期間逐行翻譯成目標機器碼,下次執行時,還是需要逐行解釋,我們可以簡單認為 Java、Python 都是解釋型

語言。

編譯型相當於廚師直接做好一桌子菜,顧客來了直接開吃,而解釋型就像吃火鍋,廚師把菜洗好,顧客需要自己動手邊煮邊吃,效率上來

說解釋型語言自然比不過編譯型語言,當然也不是絕對了,像 JIT 的效率就很高

以上是對編譯型語言和解釋型語言的一個簡單粗暴的區分,但是 Python(這里主要是指CPython)並不是嚴格的解釋型語言,因為

Python 代碼在運行前,會先編譯(翻譯)成中間代碼,每個 .py 文件將被換轉成 .pyc 文件,.pyc 就是一種位元組碼文件,它是與平台無

關的中間代碼,不管你放在 Windows 還是 Linux 平台都可以執行,運行時將由虛擬機逐行把位元組碼翻譯成目標代碼。

我們安裝Python 時候,會有一個 Python.exe 文件,它就是 Python 解釋器,你寫的每一行 Python 代碼都是由它負責執行,解釋器由

一個編譯器和一個虛擬機構成,編譯器負責將源代碼轉換成位元組碼文件,而虛擬機負責執行位元組碼,所以,解釋型語言其實也有編譯過

程,只不過這個編譯過程並不是直接生成目標代碼,而是中間代碼(位元組碼),然後再通過虛擬機來逐行解釋執行位元組碼。

總結

Python代碼首先會編程一個位元組碼文件,再由虛擬機逐行解釋,把每一行位元組碼代碼翻譯成目標指令給CPU執行。

推薦學習《Python教程》。

9. pypy如何把python的py文件編譯成c代碼

pypy是用python實現的python,區別於cPython,和C沒什麼關系,你要用python寫C,需要的是Cython。具體看文檔,沒那麼難。

10. CPython是什麼PyPy是什麼Python和這兩個東西有什麼關系

CPython:是用C語言實現Pyhon,是目前應用最廣泛的解釋器。最新的語言特性都是在這個上面先實現,基本包含了所有第三方庫支持,但是CPython有幾個缺陷,一是全局鎖使Python在多線程效能上表現不佳,二是CPython無法支持JIT(即時編譯),導致其執行速度不及Java和Javascipt等語言。於是出現了Pypy。

Pypy:是用Python自身實現的解釋器。針對CPython的缺點進行了各方面的改良,性能得到很大的提升。最重要的一點就是Pypy集成了JIT。但是,Pypy無法支持官方的C/Python API,導致無法使用例如Numpy,Scipy等重要的第三方庫。這也是現在Pypy沒有被廣泛使用的原因吧。

而PyPy與CPython的不同在於,別的一些python實現如CPython是使用解釋執行的方式,這樣的實現方式在性能上是很凄慘的。而PyPy使用了JIT(即時編譯)技術,在性能上得到了提升。

閱讀全文

與修改Cpython源碼編譯相關的資料

熱點內容
圖論與java 瀏覽:575
程序員寫代碼告白初音 瀏覽:738
sshpdf 瀏覽:539
windows調用linux 瀏覽:594
如何查找本地伺服器名稱 瀏覽:819
linux文件只讀屬性 瀏覽:585
VNAS技術加密 瀏覽:131
python編程電話費計算話費 瀏覽:462
c編譯文件怎麼改名 瀏覽:626
pdf轉格式軟體 瀏覽:875
單片機原理及應用第二版第八章答案 瀏覽:536
伺服器一百個節點相當於什麼 瀏覽:344
綏化電氣編程培訓 瀏覽:374
輕量應用伺服器怎麼添加軟體上去 瀏覽:813
資產管理pdf 瀏覽:170
製冷壓縮機熱負荷過低 瀏覽:363
伺服器出現兩個IPV4地址 瀏覽:848
宜興雲存儲伺服器 瀏覽:221
如何開放遠程伺服器上的埠號 瀏覽:71
大規模單片機廠家供應 瀏覽:956