成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

六大 Python 解釋器

開發(fā)
觀察你的代碼在其他解釋器下運行的表現(xiàn)或許是一項有趣的嘗試。

作為最受歡迎的編程語言之一,Python 需要一個解釋器來執(zhí)行其代碼所定義的命令。與其他可直接編譯成機器代碼的語言不同,Python 代碼需要解釋器讀取它并把它轉譯給進行相關操作的 CPU。那么,哪些解釋器有哪些呢?本文將對其中幾種進行介紹。

解釋器簡介

提到 Python 解釋器,我們通常會想到 /usr/bin/python 這個二進制文件。它使你能夠執(zhí)行 .py 文件。然而,解釋操作僅僅是其中一環(huán)。在 Python 代碼真正被 CPU 執(zhí)行之前,都需要經(jīng)過以下四個步驟:

  1. 詞法分析 - 將人類編寫的源代碼轉換為一序列邏輯實體,被稱為 詞法標記lexical token。
  2. 解析 - 解析器會檢查詞法標記的語法和語義規(guī)則生成 抽象語法樹abstract syntax tree(AST)。
  3. 編譯 - 編譯器會根據(jù) AST 創(chuàng)建 Python 字節(jié)碼,這些字節(jié)碼由非常基礎的,和平臺無關的指令組成。
  4. 解釋 - 解釋器處理字節(jié)碼并執(zhí)行特定的操作。

如你所見,在任何實質(zhì)性的操作發(fā)生之前,我們需要走過這些步驟。這也解釋了深入研究不同解釋器的重要性。

1、CPython

作為 Python 的參考實現(xiàn),CPython 默認地被許多系統(tǒng)所采用。如其名稱所示,CPython 是用 C 語言編寫的。這也意味著,我們可以 以 C 語言編寫擴展,從而讓 Python 打通到廣泛使用的 C 語言庫代碼。CPython 廣泛應用于各種平臺,包括 ARM 和 RISC。然而,作為 Python 的參考實現(xiàn),CPython 更注重精細的優(yōu)化,而非運行速度。

2、Pyston

Pyston 是一個從 CPython 解釋器衍生出的分支,其中實現(xiàn)了性能優(yōu)化。該項目定位自己為標準 CPython 解釋器在處理大型、真實世界應用時的替代品,并有可能加速高達 30%。由于缺乏兼容的二進制包,Pyston 在下載過程中需要重新編譯。

3、PyPy

采用了 RPython 編寫的 PyPy 是一個專為 Python 配備的 即時(JIT) 編譯器,RPython 是 Python 的一個靜態(tài)類型的子集。不同于 CPython 解釋器,PyPy 對源代碼進行編譯,生成 CPU 可直接執(zhí)行的機器碼。PyPy 是 Python 開發(fā)者的實驗室,在這里他們能更容易地測試新特性。

相較于 CPython,PyPy 的執(zhí)行速度更快。由于 JIT 編譯器的特性,長時間運行的應用更能從緩存中受益。PyPy 可以被視為 CPython 的有效替代。雖然其中存在一些缺點,大部分的 C 擴展模塊在 PyPy 中也得到支持,但運行速度會相對慢一些。PyPy 擴展模塊使用 Python(而不是 C)編寫,這使 JIT 編譯器能夠對其進行優(yōu)化。只要你的應用程序不依賴于不兼容的模塊,PyPy 就是替換 CPython 的理想選擇。你可以在項目官網(wǎng)找到一個專門的頁面,詳細描述 PyPy 與 CPython 的不同之處:PyPy 與 CPython 的差異

4、RustPython

顧名思義,RustPython 是一個由 Rust 編寫的 Python 解釋器。盡管 Rust 如今還是一個相對年輕的編程語言,但因其優(yōu)良特性已逐步受到開發(fā)者的推崇,甚至被視為 C 和 C++ 的可能接班人。默認情況下,RustPython 的行為與 CPython 的解釋器類似,但它也可以選擇啟用 JIT 編譯器。值得一提的是,Rust 工具鏈能直接編譯為 WebAssembly ,進而允許在瀏覽器中全面運行解釋器。你可以在 這里 看到它的在線演示。

5、Stackless Python

Stackless Python 自稱是 Python 編程語言的增強版本。該項目基本上是 CPython 解釋器衍生的一個項目,其為該語言添加了微線程、通道和調(diào)度器。微線程可以幫助你將代碼組織成可以并行運行的 “小任務tasklet”。這與采用 greenlet 模塊的綠色線程模型相似。通道可以用作 “小任務” 之間的雙向通信。Stackless Python 的一個知名用戶是大型多人在線角色扮演游戲 Eve Online

6、Micro Python

如果你的目標平臺是微控制器,那么 MicroPython 將是你的首選。它是一種極簡的實現(xiàn),只需要 16kB 的內(nèi)存和 256kB 的存儲空間。由于其主要面向的是嵌入式環(huán)境,MicroPython 的標準庫只包含 CPython 豐富的 STL 的一部分。對于開發(fā)和測試,或者作為輕量級替代品,MicroPython 也可以在普通的 x86 和 x64 系統(tǒng)上運行。MicroPython 支持 Linux、Windows,以及多種微控制器。

性能

就其設計而言,Python 本質(zhì)上是一種運行速度不夠快的語言。根據(jù)任務性質(zhì)的不同,各種解釋器間存在明顯的性能差異。要想弄清楚哪種解釋器最適合特定任務,可以參考 pybenchmarks.org。與使用解釋器相比,另一種選擇是直接將 Python 二進制代碼編譯成機器碼,例如,Nuitka 就是能夠完成這種工作的項目之一,它可以將 Python 代碼編譯成 C 代碼,然后將 C 代碼通過常規(guī)的 C 編譯器編譯成機器碼。Python 編譯器的主題范圍廣泛,值得一篇獨立的文章來詳述。

總結

Python 是構建快速原型和自動化任務的優(yōu)秀語言,同時它又易于學習,對初學者友好。如果你平時維持使用 CPython,那么嘗試看看你的代碼在另一解釋器上運行會是什么樣子也許會很有趣。如果你是 Fedora 用戶,你可以輕松地測試幾種其他解釋器,因為其包管理器已經(jīng)提供了需要的二進制文件。你可以在 fedora.developer.org 上查找更多信息。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2012-05-23 11:31:09

瀏覽器帳號管理

2010-08-16 10:14:23

云計算誤區(qū)

2024-10-22 14:42:14

2010-09-25 15:22:19

DHCP故障處理

2010-07-30 13:15:17

Flex優(yōu)勢

2012-02-28 10:17:17

服務器虛擬化虛擬機

2012-06-04 16:01:29

Linux服務器日志

2014-08-25 13:40:40

2020-06-04 07:00:00

機器學習人工智能Python

2011-03-16 10:44:19

2013-08-23 10:18:06

Hadoop

2016-07-06 11:16:47

2015-06-23 09:13:51

2022-10-19 14:23:17

2010-09-09 10:54:58

2009-08-03 11:39:33

2023-07-24 11:01:32

2023-05-11 11:36:56

云計算云供應商

2013-08-23 10:42:03

Hadoop

2009-06-10 17:13:50

Java開源軟件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品国产综合久久久久久丝袜 | 日韩激情视频一区 | 五月婷婷激情网 | 亚洲精品国产第一综合99久久 | 国产精品1区 | 九九99靖品 | 日本视频在线播放 | 国产成人jvid在线播放 | 国产91黄色| 久久国产激情视频 | 久久久精品天堂 | 国产精品99精品久久免费 | 精品国产三级 | 精品一区二区三区在线观看国产 | 国产高清视频一区二区 | 最近最新中文字幕 | 欧美aaa| av电影手机在线看 | 亚洲一区二区三区欧美 | 亚洲成av| 日本成人免费网站 | 国产区精品| 国产一区日韩在线 | 久久成人免费视频 | 99久久国产 | 国产精品久久久久久久久久99 | www.国产精品| 黄色在线观看国产 | 久久九九99 | 国产一区精品 | 成人h视频在线观看 | 亚洲成人精品视频 | 日韩高清一区 | 区一区二区三在线观看 | 日韩一区二区在线播放 | 狠狠狠色丁香婷婷综合久久五月 | 天天爱爱网 | av大片 | 美日韩精品 | 久草视频在线播放 | 久久极品|