當前位置:首頁 » 編程軟體 » 編譯cpython解析器

編譯cpython解析器

發布時間: 2022-06-01 10:53:03

❶ 用 Cpython寫的python代碼能否用JPython解釋器解釋

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

❷ 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庫。

❸ Python解釋器有哪些

python 解釋器很多種,最廣泛運用的有:
1、CPython
當我們從Python官方網站下載並安裝好Python 2.7後,我們就直接獲得了一個官方版本的解釋器:CPython。這個解釋器是用C語言開發的,所以叫CPython。在命令行下運行python就是啟動CPython解釋器。
CPython是使用最廣的Python解釋器。教程的所有代碼也都在CPython下執行。
2、IPython
IPython是基於CPython之上的一個互動式解釋器,也就是說,IPython只是在交互方式上有所增強,但是執行Python代碼的功能和CPython是完全一樣的。好比很多國產瀏覽器雖然外觀不同,但內核其實都是調用了IE。
CPython用>>>作為提示符,而IPython用In [序號]:作為提示符。
3、PyPy
PyPy是另一個Python解釋器,它的目標是執行速度。PyPy採用JIT技術,對Python代碼進行動態編譯(注意不是解釋),所以可以顯著提高Python代碼的執行速度。
絕大部分Python代碼都可以在PyPy下運行,但是PyPy和CPython有一些是不同的,這就導致相同的Python代碼在兩種解釋器下執行可能會有不同的結果。如果你的代碼要放到PyPy下執行,就需要了解PyPy和CPython的不同點。
4、Jython
Jython是運行在Java平台上的Python解釋器,可以直接把Python代碼編譯成Java位元組碼執行。
5、IronPython
IronPython和Jython類似,只不過IronPython是運行在微軟.Net平台上的Python解釋器,可以直接把Python代碼編譯成.Net的位元組碼。
6、qpython用於在手機上編程

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

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

❺ 什麼是python解釋器

什麼是python解釋器?
當我們編寫Python代碼時,我們得到的是一個包含Python代碼的以.py為擴展名的文本文件。要運行代碼,就需要Python解釋器去執行.py文件。
由於整個Python語言從規范到解釋器都是開源的,所以理論上,只要水平夠高,任何人都可以編寫Python解釋器來執行Python代碼(當然難度很大)。事實上,確實存在多種Python解釋器。
CPython
當我們從Python官方網站下載並安裝好Python 2.7後,我們就直接獲得了一個官方版本的解釋器:CPython。這個解釋器是用C語言開發的,所以叫CPython。在命令行下運行python就是啟動CPython解釋器。
CPython是使用最廣的Python解釋器。教程的所有代碼也都在CPython下執行。
IPython
IPython是基於CPython之上的一個互動式解釋器,也就是說,IPython只是在交互方式上有所增強,但是執行Python代碼的功能和CPython是完全一樣的。好比很多國產瀏覽器雖然外觀不同,但內核其實都是調用了IE。
CPython用>>>作為提示符,而IPython用In [序號]:作為提示符。
PyPy
PyPy是另一個Python解釋器,它的目標是執行速度。PyPy採用JIT技術,對Python代碼進行動態編譯(注意不是解釋),所以可以顯著提高Python代碼的執行速度。
絕大部分Python代碼都可以在PyPy下運行,但是PyPy和CPython有一些是不同的,這就導致相同的Python代碼在兩種解釋器下執行可能會有不同的結果。如果你的代碼要放到PyPy下執行,就需要了解PyPy和CPython的不同點。
Jython
Jython是運行在Java平台上的Python解釋器,可以直接把Python代碼編譯成Java位元組碼執行。
IronPython
IronPython和Jython類似,只不過IronPython是運行在微軟.Net平台上的Python解釋器,可以直接把Python代碼編譯成.Net的位元組碼。
小結
Python的解釋器很多,但使用最廣泛的還是CPython。如果要和Java或.Net平台交互,最好的辦法不是用Jython或IronPython,而是通過網路調用來交互,確保各程序之間的獨立性。
本教程的所有代碼只確保在CPython 2.7版本下運行。請務必在本地安裝CPython(也就是從Python官方網站下載的安裝程序)。
此外,教程還內嵌一個IPython的Web版本,用來在瀏覽器內練習執行一些Python代碼。要注意兩者功能一樣,輸入的代碼一樣,但是提示符有所不同。另外,不是所有代碼都能在Web版本的IPython中執行,出於安全原因,很多操作(比如文件操作)是受限的,所以有些代碼必須在本地環境執行代碼。
相關推薦:《Python教程》以上就是小編分享的關於什麼是python解釋器的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!

❻ 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(即時編譯)技術,在性能上得到了提升。

❼ python 什麼是全局解釋器鎖gil

什麼是Python全局解釋器鎖(GIL)?
每個CPU在同一時間只能執行一個線程,那麼其他的線程就必須等待該線程的全局解釋器,使用權消失後才能使用全局解釋器,即使多個線程直接不會相互影響在同一個進程下也只有一個線程使用CPU,這樣的機制稱為全局解釋器鎖(GIL)。GIL的設計簡化了CPython的實現,使得對象模型包括關鍵的內建類型,如:字典等,都是隱含的,可以並發訪問的,鎖住全局解釋器使得比較容易的實現對多線程的支持,但也損失了多處理器主機的並行計算能力。
Python全局解釋器鎖(GIL)是一種互斥鎖或鎖,僅允許一個線程持有Python解釋器的控制權。
全局解釋器鎖的好處
1、避免了大量的加鎖解鎖的好處;
2、使數據更加安全,解決多線程間的數據完整性和狀態同步。
全局解釋器鎖的劣勢
多核處理器退化成單核處理器,只能並發不能並行。
Python全局解釋器鎖(GIL)的作用
多線程情況下必須存在資源的競爭,GIL是為了保證在解釋器級別的線程唯一使用共享資源(cpu)。

❽ Python基礎:全局解釋器所GIL,

首先需要明確的一點是GIL並不是Python的特性,它是在實現Python解析器(CPython)時所引入的一個概念。就好比C++是一套語言(語法)標准,但是可以用不同的編譯器來編譯成可執行代碼。有名的編譯器例如GCC,INTEL C++,Visual C++等。Python也一樣,同樣一段代碼可以通過CPython,PyPy,Psyco等不同的Python執行環境來執行。像其中的JPython就沒有GIL。然而因為CPython是大部分環境下默認的Python執行環境。所以在很多人的概念里CPython就是Python,也就想當然的把GIL歸結為Python語言的缺陷。所以這里要先明確一點:GIL並不是Python的特性,Python完全可以不依賴於GIL
那麼CPython實現中的GIL又是什麼呢?GIL全稱Global Interpreter Lock為了避免誤導,我們還是來看一下官方給出的解釋:
In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly because CPython』s memory management is not thread-safe. (However, since the GIL exists, other features have grown to depend on the guarantees that it enforces.)
好吧,是不是看上去很糟糕?一個防止多線程並發執行機器碼的一個Mutex,乍一看就是個BUG般存在的全局鎖嘛!別急,我們下面慢慢的分析。
為什麼會有GIL
由於物理上得限制,各CPU廠商在核心頻率上的比賽已經被多核所取代。為了更有效的利用多核處理器的性能,就出現了多線程的編程方式,而隨之帶來的就是線程間數據一致性和狀態同步的困難。即使在CPU內部的Cache也不例外,為了有效解決多份緩存之間的數據同步時各廠商花費了不少心思,也不可避免的帶來了一定的性能損失。
Python當然也逃不開,為了利用多核,Python開始支持多線程。而解決多線程之間數據完整性和狀態同步的最簡單方法自然就是加鎖。 於是有了GIL這把超級大鎖,而當越來越多的代碼庫開發者接受了這種設定後,他們開始大量依賴這種特性(即默認python內部對象是thread-safe的,無需在實現時考慮額外的內存鎖和同步操作)。
慢慢的這種實現方式被發現是蛋疼且低效的。但當大家試圖去拆分和去除GIL的時候,發現大量庫代碼開發者已經重度依賴GIL而非常難以去除了。有多難?做個類比,像MySQL這樣的「小項目」為了把Buffer Pool Mutex這把大鎖拆分成各個小鎖也花了從5.5到5.6再到5.7多個大版為期近5年的時間,並且仍在繼續。MySQL這個背後有公司支持且有固定開發團隊的產品走的如此艱難,那又更何況Python這樣核心開發和代碼貢獻者高度社區化的團隊呢?
所以簡單的說GIL的存在更多的是歷史原因。如果推到重來,多線程的問題依然還是要面對,但是至少會比目前GIL這種方式會更優雅。
GIL的影響
從上文的介紹和官方的定義來看,GIL無疑就是一把全局排他鎖。毫無疑問全局鎖的存在會對多線程的效率有不小影響。甚至就幾乎等於Python是個單線程的程序。 那麼讀者就會說了,全局鎖只要釋放的勤快效率也不會差啊。只要在進行耗時的IO操作的時候,能釋放GIL,這樣也還是可以提升運行效率的嘛。或者說再差也不會比單線程的效率差吧。理論上是這樣,而實際上呢?Python比你想的更糟。
下面我們就對比下Python在多線程和單線程下得效率對比。測試方法很簡單,一個循環1億次的計數器函數。一個通過單線程執行兩次,一個多線程執行。最後比較執行總時間。測試環境為雙核的Mac pro。註:為了減少線程庫本身性能損耗對測試結果帶來的影響,這里單線程的代碼同樣使用了線程。只是順序的執行兩次,模擬單線程。

❾ python用什麼解釋器

Python的編輯器也是眾多的,下面說下幾種:

  • 提問者使用的是dos的編輯器,這一種當然不舒服;

  • Python的自帶的有兩種:

    2.1 Shell形式:這一種和dos一樣很糾結,如下圖:

  • 其他的第三方,比如Eclips+PyDev等;

  • 個人建議你使用2.2裡面的Edit模式,啟動方法是:

    開始--所有程序--Python--IDLE(PythonGUI)。

❿ 腳本語言需要解釋器才能運行,為什麼可以用Python來寫Pypy,而且效率比CPython更高呢

但是C因為跟底層過於接近,所以實現JIT解釋器有諸多限制。(比如Psyco到項目死亡為止都沒能實現出64位的JIT解釋器) Pypy則換了另外一種思路。它先實現了一個Python的子集(注意,不是完整的python),叫RPython。然後用RPython去實現了Python的JIT解釋器。這個RPython本身,並不依賴運行時解釋器,而是直接被翻譯成C代碼(實際上可以翻譯成多種目標代碼,如Java、C#等)再進行編譯,本質上它是一種編譯型語言。所以,用RPython寫出來的程序,最終是會被編譯成本地代碼的,跟C寫的沒有本質區別。 由於RPython作者強大的優化功力,RPython程序最終編譯結果基本等同於C直接寫的效率。用這種程序實現出來的JIT解釋器,自然也不會慢。而JIT技術,又保證了運行在這個解釋器上的Python程序的效率的提升。

熱點內容
未拆封玩客雲3怎麼搭建伺服器 發布:2024-05-04 00:06:11 瀏覽:795
徹底刪除編譯安裝的文件 發布:2024-05-04 00:05:33 瀏覽:54
編程機構數量 發布:2024-05-03 23:49:25 瀏覽:954
python源碼編譯安裝 發布:2024-05-03 23:48:16 瀏覽:107
android手機市場 發布:2024-05-03 23:47:04 瀏覽:497
如何配置vlan並添加埠 發布:2024-05-03 23:37:53 瀏覽:724
中國電信無線密碼怎麼修改 發布:2024-05-03 23:37:51 瀏覽:116
源腳本修改器 發布:2024-05-03 23:36:26 瀏覽:192
有哪些低配置游戲像王者榮耀 發布:2024-05-03 22:27:11 瀏覽:244
gp資料庫庫 發布:2024-05-03 22:12:43 瀏覽:874