首頁 後端開發 Python教學 Python 3.12的目標:更有效率的效能!

Python 3.12的目標:更有效率的效能!

Apr 22, 2023 pm 02:43 PM
python

 Python 3.12 目标:还可以更快!

依照發布計劃,Python 3.11.0 將於 2022 年 10 月 24 日發布。

據測試,3.11 相比於 3.10,將會有 10-60% 的性能提升,這個成果主要歸功於「Faster CPython」項目,即「香農計畫」。

3.11 版本為 Python 的快速開啟了一個令人興奮的好頭。接下來,3.12 還會有更多動作。

以下文章翻譯自「香農計畫」的《Python 3.12 Goals》,大家先一睹為快吧!

  •  作者:Mark Shannon
  • ##  譯者:豌豆花下貓@Python貓
  •  英文:https://github.com/faster-cpython/ideas /wiki/Python-3.12-Goals
本文內容可能會改動,以實際版本為準!

本文是 Faster CPython 計畫在 3.12 中實現的主要內容的概要。

追蹤優化器

Python 3.11 提升速度的主要方法是用更快的與上下文相關的操作碼(自適應的專門化操作碼)替換個別的操作碼,下一個大的改進方法是優化多個操作碼的運作。

為此,現有的許多進階操作碼將被替換成低階操作碼,例如,用於檢查版本號和引用計數的操作碼。這些更簡單的操作碼更容易進行最佳化,例如,可以刪除冗餘的參考計數操作。

這些更底層的操作碼也能讓我們得到一組適合用來產生機器碼的指令(在 CPython 和第三方 JIT 專案中都適用)。

為了做到這一點,解釋器循環(interpreter loop)將基於宣告性的描述而產生。

這可減少一部分為了保持解釋器迴圈與某些相關函數同步而產生的 bug(mark_stacks、stack_effect 等函數),同時也讓我們可以對解譯器迴圈作較大的變更試驗。

多執行緒並行

Python 目前每個行程都有一個全域解釋器鎖定(GIL),阻礙了多執行緒的並行。

    PEP-684:https://peps.python.org/pep-0684
  • PEP-554:https://peps.python.org/pep-0554

Python 3.12 目标:还可以更快!

PEP-684 提出了一個方案,即確保所有的全域狀態都是執行緒安全的,並移動到每個子解釋器的全域解釋器鎖定中使用。

Python 3.12 目标:还可以更快!


PEP-554 提出了讓Python 創建子解釋器的方案(目前只是一個C API 特性),從而實現真正的多線程並行。

     Python貓註:PEP-554 早在 2017 年就提出了,目標是落地在 Python 3.8-3.9 版本,然而事與願違。早在 2019 年的時候,我還翻譯了一篇《Has the Python GIL been slain?》。屠刀已揮出,讓它再飛一會~~
更多專門化

我們分析了哪些字節碼將從專門化中獲益最多,計劃在3.12 完成其餘的高收益的改進。

#//m.sbmmt.com/link/7392ea4ca76ad2fb4c9c3b6a5c6e31e3

Python 3.12 目标:还可以更快!

#較小的物件結構

有許多可以減少Python 物件結構大小的機會。由於它們被頻繁使用,這不僅有利於整體的記憶體使用,還有利於快取的一致性。我們計劃在 3.12 中實現最有希望的一些想法。

這裡有一些向後相容性與效能之間的權衡問題,可能需要提出一個 PEP 來建立共識。

Python 3.12 目标:还可以更快!

減少記憶體管理的開銷

我們不僅會減少物件的大小,還會使它們的 layout 更加規則。

這不僅能優化記憶體的分配及釋放,還能在 GC 和重新分配期間加快遍歷物件的速度。

API 穩定性

除了前述專案外,開發團隊還將提升 CPython 程式碼庫的整體品質:

  • 透過減少不同編譯階段的耦合,使編譯器更易於維護與測試。
  • 積極地在 C 語言層級監控和改進 CPython 測試套的程式碼覆蓋率。
  • 改進 Python 效能基準測試套,加入更具代表性的現實世界的負載測試。
  • 協助處理 CPython 問題和 PR,特別是與效能有關的問題。
  • 增加用於標準基準測試的機器,增加 macOS 和 Windows 的測試結果。
  • 繼續跟著主要的深度使用 Python 核心的專案合作,幫助它們適配 CPython 解釋器的變更。

以上是Python 3.12的目標:更有效率的效能!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Stock Market GPT

Stock Market GPT

人工智慧支援投資研究,做出更明智的決策

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

如何從python中的unignts.txt文件安裝包裝 如何從python中的unignts.txt文件安裝包裝 Sep 18, 2025 am 04:24 AM

運行pipinstall-rrequirements.txt可安裝依賴包,建議先創建並激活虛擬環境以避免衝突,確保文件路徑正確且pip已更新,必要時使用--no-deps或--user等選項調整安裝行為。

如何用Pytest測試Python代碼 如何用Pytest測試Python代碼 Sep 20, 2025 am 12:35 AM

Pytest是Python中簡單強大的測試工具,安裝後按命名規則自動發現測試文件。編寫以test_開頭的函數進行斷言測試,使用@pytest.fixture創建可複用的測試數據,通過pytest.raises驗證異常,支持運行指定測試和多種命令行選項,提升測試效率。

如何處理python中的命令行參數 如何處理python中的命令行參數 Sep 21, 2025 am 03:49 AM

theargparsemodulestherecommondedwaywaytohandlecommand-lineargumentsInpython,提供式刺激,typeValidation,helpmessages anderrornhandling; useSudys.argvforsimplecasesRequeRequeRingminimalSetup。

什麼是BIP?為什麼它們對比特幣的未來如此重要? 什麼是BIP?為什麼它們對比特幣的未來如此重要? Sep 24, 2025 pm 01:51 PM

目錄什麼是比特幣改進提案(BIP)?為什麼BIP如此重要?比特幣改進提案(BIP)的歷史BIP流程如何運作? BIP類型什麼是信號以及礦工如何發出信號? Taproot快速試用BIP的利與弊結語‍自2011年以來,對比特幣的任何改進都通過稱為比特幣改進提案或​​“BIP”的系統進行。比特幣改進提案(BIP)為比特幣如何發展提供了指導方針一般來說,BIP有三種可能的類型,其中兩種與比特幣的技術變革有關每個BIP都是從比特幣開發者之間的非正式討論開始的,他們可以在任何地方聚集,包括Twi

從新手到專家:10個必備的免費公共數據集網站 從新手到專家:10個必備的免費公共數據集網站 Sep 15, 2025 pm 03:51 PM

對於數據科學的初學者而言,從“毫無經驗”到“行業專家”的躍遷之路,其核心就是不斷地實踐。而實踐的基礎,正是豐富多樣的數據集。幸運的是,網絡上有大量提供免費公共數據集的網站,它們是提陞技能、磨練技術的寶貴資源。

如何使用Python中的@ContextManager Decorator創建上下文管理器? 如何使用Python中的@ContextManager Decorator創建上下文管理器? Sep 20, 2025 am 04:50 AM

Import@contextmanagerfromcontextlibanddefineageneratorfunctionthatyieldsexactlyonce,wherecodebeforeyieldactsasenterandcodeafteryield(preferablyinfinally)actsas__exit__.2.Usethefunctioninawithstatement,wheretheyieldedvalueisaccessibleviaas,andthesetup

電腦怎麼選才適合大數據分析?高性能計算的配置指南 電腦怎麼選才適合大數據分析?高性能計算的配置指南 Sep 15, 2025 pm 01:54 PM

大數據分析需側重多核CPU、大容量內存及分層存儲。首選多核處理器如AMDEPYC或RyzenThreadripper,兼顧核心數量與單核性能;內存建議64GB起步,優先選用ECC內存保障數據完整性;存儲采用NVMeSSD(系統與熱數據)、SATASSD(常用數據)和HDD(冷數據)組合,提升整體處理效率。

如何編寫Python中日常任務的自動化腳本 如何編寫Python中日常任務的自動化腳本 Sep 21, 2025 am 04:45 AM

Identifyrepetitivetasksworthautomating,suchasorganizingfilesorsendingemails,focusingonthosethatoccurfrequentlyandtakesignificanttime.2.UseappropriatePythonlibrarieslikeos,shutil,glob,smtplib,requests,BeautifulSoup,andseleniumforfileoperations,email,w

See all articles