Python潮流周刊:Python 3.13 計劃將解釋器提速 50%!
你好,我是貓哥。這里每周分享優(yōu)質(zhì)的 Python 及通用技術(shù)內(nèi)容,部分為英文,已在小標(biāo)題注明。(標(biāo)題取自其中一則分享,不代表全部內(nèi)容都是該主題,特此聲明。)
由于公眾號不支持外鏈,文中大量鏈接無法點擊??芍边_(dá)我的博客閱讀(復(fù)制到瀏覽器中打開):https://pythoncat.top/posts/2023-06-24-weekly
??文章&教程
- Python 3.13 版本的計劃 (英)
Faster CPython 項目(即香農(nóng)計劃)有了關(guān)于 3.13 版本的最新計劃,這次的性能目標(biāo)是減少解釋器 50% 的耗時。涵蓋三項主要工作:第 2 層的優(yōu)化器、啟用子解釋器(PEP-554)、內(nèi)存管理。
- 為什么 Numpy 并行性很重要?(英)
Numpy 是作科學(xué)計算和數(shù)據(jù)分析的最重要的庫之一,并行性是提升其性能的重要手段。文章介紹了 5 種可以實現(xiàn) Numpy 并行性的場景和方法:加載/保存 Numpy 數(shù)組數(shù)據(jù)、高效地計算數(shù)學(xué)函數(shù)、高效地初始化數(shù)組、并行執(zhí)行數(shù)組的元素級數(shù)學(xué)運算、在進(jìn)程間高效共享 Numpy 數(shù)組數(shù)據(jù)。
- 用少于 100 行的 Rust 使 Python 變快 100 倍 (英)
文章針對一個有性能問題的 Python 庫,使用 Rust 重寫并作了三輪優(yōu)化后,提升了性能 100 倍。文中使用了 py-spy 庫繪制火焰圖,分析出了代碼的瓶頸點,并以此作為優(yōu)化的依據(jù),可以看到前后火焰圖的差別很大。

py-spy火焰圖
- 將 Python 項目移植到 Rust (英)
文章指出“一步到位的移植”方式存在一些問題,從而提出“迭代式移植”的方法,并給出了一個代碼示例。
- 設(shè)計 Pythonic 的庫 API (英)
如何設(shè)計出一個 Pythonic 的 API?在設(shè)計上有什么方法和基本原則呢?文章從代碼結(jié)構(gòu)、變量命名、錯誤處理、版本控制、類型注解等方面,給出了非常詳細(xì)的介紹。文章較長,最后總結(jié)出 18 條 takeaways。
- 編譯類型化的 Python (英)
Python 已支持類型提示,那能否編譯 Python 代碼為本地代碼以提升性能呢?雖然類型提示可以提供一些性能優(yōu)化,但由于 Python 的動態(tài)特性和靈活性,使得靜態(tài)分析和編譯非常困難。因此目前還沒有一種方法可以將 Python 代碼編譯成本地代碼以提高性能。
- pytest 的夾具很神奇!(英)
夾具(fixture)是在測試前設(shè)置和準(zhǔn)備必要數(shù)據(jù)的一種機(jī)制,可以將測試數(shù)據(jù)和測試代碼分離。文章介紹了 pytest 中夾具的基本用法,以及與 Django 項目的結(jié)合使用。
- 探析 Python 字典的實現(xiàn)原理 (英)
這是一個系列文章,支持用可視化的調(diào)試方式探析 Python字典的實現(xiàn)原理。這篇文章介紹了如何通過哈希表實現(xiàn)字典,以及如何解決哈希沖突。

在列表中搜索的可視化
- Flask vs Django:選擇完美的 Python Web 框架 (英)
Python 最主流的兩個 Web 框架是 Flask 和 Django,文章深入比較了它們的主要功能、優(yōu)勢與缺點、流行的插件和使用場景等,讓讀者更方便做出自己的選擇。
- 為什么不告訴人們“簡單地”使用 pyenv、poetry、anaconda (英)
文章的要點是:介紹一個基本的 Python 打包流程,盡可能減少依賴和要求,并解決大多數(shù)用戶的打包問題。文中列出了一些常見的打包問題,并提供了一些解決方案,同時指出了一些常見的打包工具(如 homebrew、pyenv、anaconda、poetry)的缺點。
- PyScript 中的 Asyncio (英)
文章介紹了在 PyScript/Pyodide 中使用 async/await/asyncio 來編寫并發(fā)代碼,還介紹了 Pyodide.Webloop 的實現(xiàn),該實現(xiàn)允許 async/await 與瀏覽器事件循環(huán)一起使用。
- 線程的問題及其解決方案 (英)
上期周刊第一則分享中的三篇文章偏向于支持隱式的 async,有讀者建議再呈現(xiàn)一些支持顯式 async 的觀點。這篇文章的要點是:線程會使本地推理變得困難,而本地推理是軟件開發(fā)中最重要的事情之一。因此,應(yīng)該避免使用線程,而使用異步編程模型,如回調(diào)、promise、協(xié)程等。同時,文章還提到了使用隱式協(xié)程的風(fēng)險,因為它們可能會導(dǎo)致與線程相同的問題。(@Plutonium 投稿)
???項目&資源
- PyQt-Fluent-Widgets:基于 PyQt5 的 Fluent Design 風(fēng)格組件庫
目前開源且美觀實用的 PyQt/PySide 組件庫很少,所以作者照著 WinUI3 的設(shè)計稿寫了這個 Fluent Design 風(fēng)格的組件庫,支持亮暗主題無縫切換和自定義主題色,支持 PyQt5/PyQt6/PySide2/PySide6 ,搭配 QtDesigner 可以快速設(shè)計出美觀的界面。(來自@shokokawaii)

- pyvibe:使用 Python 生成樣式化的 HTML 頁面 (英)
PyVibe是一個用于創(chuàng)建網(wǎng)頁的 Python 庫,讓 Python 開發(fā)者快速構(gòu)建前端頁面,簡化 UI 開發(fā)。PyVibe 返回一個 HTML 字符串,可用于靜態(tài)頁面、Flask 函數(shù)、Pyodide 動態(tài)客戶端呈現(xiàn)。

PyVibe生成標(biāo)題及文本的示例
- pynecone:純 Python 的 Web 框架 (英)
Pynecone 發(fā)布于 2022 年 12 月,已獲得 9K 星星,可謂十分火爆。它是一個用于構(gòu)建和部署 Web 程序的全??蚣埽峁┝?50+ 內(nèi)置組件,支持創(chuàng)建復(fù)雜的布局和使用 CSS 的全部功能來設(shè)置樣式。

Pynecone文檔及演示項目
- pytudes:短小精悍的 Python 編程練習(xí)內(nèi)容 (英)
這個項目包含了一些短小卻很有挑戰(zhàn)性的項目代碼,既有“Advent of Code”歷年的年度編程挑戰(zhàn)活動的題目,也有“The Riddler”的系列數(shù)學(xué)謎題,還有文字謎題、概率問題等,甚至有使用 Python 解任何的數(shù)獨題、實現(xiàn)一個 lisp 解釋器,等等。
- recognize-anything:Recognize Anything 模型和 Tag2Text 模型 (英)
Recognize Anything Model 是一種圖像標(biāo)記模型,可以高精度地識別任何常見類別;Tag2Text 是一種以標(biāo)簽為指導(dǎo)的視覺語言模型,可以支持字幕、檢索和標(biāo)簽。這個項目是這兩個模型的代碼實現(xiàn)。

對比不同模型的物體標(biāo)注能力
- ask-multiple-pdfs:支持與多個 PDF 聊天的 Langchain 程序 (英)
支持使用自然語言同時與多個 PDF 文件進(jìn)行對話。項目使用了 streamlit,可在瀏覽器中顯示用戶界面。

實現(xiàn)原理圖
- DeepKE:用于知識圖譜提取和及構(gòu)建的開放工具包 (英)
DeepKE 是用于知識圖譜構(gòu)建的知識提取工具包,支持 cnSchema、低資源、文檔級和多模態(tài)場景的實體、關(guān)系和屬性提取。三個主要功能:命名實體識別、關(guān)系提取、屬性提取。項目提供了詳細(xì)的文檔、教程和在線演示。

模型的框架
- awesome-DevOps:精選的 DevOps 平臺、工具、實踐和資源的列表 (英)
一個“awesome”系列倉庫,收錄了關(guān)于 DevOps 的方方面面的內(nèi)容,包含各種平臺、自動化、CI/CD、代碼管理、網(wǎng)絡(luò)服務(wù)器、數(shù)據(jù)庫、監(jiān)控工具、網(wǎng)關(guān)、混沌工程,等等。
??討論&問題
- Hacker News:Our Plan for Python 3.13 (英)
一則熱門討論,話題關(guān)于 Python 3.13 版本的開發(fā)計劃。不出意外,大部分的留言都圍繞著 GIL,贊成與反對聲皆有。
- 在你最喜歡的編程語言中,有哪些很優(yōu)雅的代碼庫?(英)
這也是一則 HN 上的帖子,既引起了關(guān)于編程語言本身的討論,也涉及不同編程語言生態(tài)中的一些優(yōu)秀的項目。有趣的是,有三則關(guān)于 Python 的留言都推薦了我們在上文中分享的pytudes項目!


























