Python 潮流週刊#24:no-GIL 提案正式被採納了!

豌豆花下貓發表於2023-10-29

你好,我是貓哥。這裡每週分享優質的 Python、AI 及通用技術內容,大部分為英文。標題取自其中兩則分享,不代表全部內容都是該主題,特此宣告。

微信 | 部落格 | 郵件 | Github | Telegram | Twitter

本週刊的原始檔歸檔在 Github 上,已收穫 777 star 好評,如果你也喜歡本週刊,就請給顆 star 支援一下吧:https://github.com/chinesehuazhou/python-weekly

?文章&教程

1、PEP-703 無 GIL CPython 的進展

PEP-703 是 no-GIL 專案形成的提案,就在本週,Python 指導委員會宣佈採納了這個提案!這篇文章寫於訊息宣佈的兩週前,總結了過去一段時間裡發生的技術思考和進展。(附:PEP-703 的討論

2、PEP-730 CPython 提供對 iOS 的官方支援

這是一個新提案,建議 CPython 提供對 iOS 系統的 Tier 3 級支援。如果提案被採納,則 Python 將會有更廣泛的使用。 BeeWareKivy 是支援 iOS 的 Python APP 開發框架,說明瞭技術的可行性。

3、Django 進階:開發高階的功能

文章探討在 Django 應用中整合一些高階的特性,例如:實現所見即所得編輯器、使用者認證授權、實時通訊功能、非同步任務、整合 Elasticsearch 作全文搜尋、自動化測試與持續整合。

4、在 Python 中開發非同步的任務佇列

介紹了使用 multiprocessing.Pool、multiprocessing.Queue 和 Redis 實現簡單的任務佇列,實現基礎的任務排程處理。

5、Flask、它的生態和向後相容性

上期週刊分享了一則吐槽 Flask 向後相容性不好的文章(見下),這篇是對它的回應,作者是 Flask 的維護者之一。

6、繼續關於 Flask 的討論

這是上週《我們必須聊聊 Flask》的後續,作者收到了一些正面和反面的回應,文章延續了之前的話題,並主要反駁了一些觀點。

7、介紹 rip - 快速而簡約的 pip 實現

rip 是用 Rust 開發的 PyPI 包解析及安裝庫,即 Rust 版本 pip。它試圖在 Conda 和 PyPI 間架起一座堅固的橋樑,文章介紹它為了克服這兩者的主要區別(後設資料提取、Wheel 檔案後設資料、依賴項規範)而做的一些工作。

8、使用 Rust 將資料分析速度提高 180,000 倍

如何使用 Rust 實現關鍵程式碼來提升 Python 程式的效能?文章從多個方面最佳化 k-CorrSet 問題的實現,得到了很高的速度提升。

9、什麼是 lambda 表示式?

什麼是 lambda 表示式和 lambda 函式?lambda 函式與 Python 的其它函式有何不同?它有什麼侷限性、什麼時候應該避免使用、通常使用在什麼場景?

10、手擼個影片翻譯和配音工具玩玩 結果不太妙

影片翻譯是對原始語言的影片處理後,顯示為其它語言的字幕及配音。文章是一個低成本的嘗試,技術棧:語音識別使用 openai-whisper 離線模型、文字翻譯使用 Google 介面、文字合成語音使用 Microsoft Edge tts。

11、掌握使用 FastAPI 進行整合測試

整合測試是指將各個程式碼單元作為一個整體進行測試。文章介紹基於 FastAPI 的整合測試方法,包括如何模擬身份驗證、如何模擬外部 API、如何模擬 MangoDB 相關操作、如何模擬 AWS S3。

12、Python 程式碼轉為 LATEX 公式工具

latexify_py 是一個 Google 開源的 Python 包,可以將 Python 原始碼片段編譯為相應的 LaTeX 表示式。文章介紹了它的使用方法,包括如何將 Python 函式轉為公式、Latexify 引數設定、Latexify 生成虛擬碼。

?Python潮流週刊?已免費釋出了 24 期,訪問下方連結,即可檢視全部內容:https://pythoncat.top/tags/weekly

?️專案&資源

1、celery:分散式任務佇列

Python 中比較成熟的任務佇列庫,支援 RabbitMQ、Redis 等中介軟體,很容易與主流 Web 框架整合。(star 22.4K)

2、rq:簡單的任務佇列

RQ(Redis Queue)是基於 Redis 的任務作業庫,使用門檻低,支援排隊、定時、重試等功能。(star 9.2K)

3、huey:輕量級的任務佇列

簡單輕量級的任務佇列庫,支援 Redis、SQLite、檔案系統和記憶體儲存,支援多程式、多執行緒或 Greenlet 任務執行模型。(star 4.7K)

4、rip:快速解決和安裝 Python 包(Rust 版 pip)

用 Rust 實現的 pip,支援下載、解析和安裝 PyPI 包,支援 wheel (部分支援),計劃將 sdist 檔案。

5、Selenium-python-helium:Web 自動化庫,讓 Selenium 更好用

Selenium 是 Web 自動化的最優庫之一,Helium 是在其基礎上的封裝,使 Web 自動化更為方便。除了高階 API,它還簡化了 Web 驅動管理、支援與巢狀的 iFrame 中元素互動、支援隱式等待、支援顯式等待。(star 3.6K)

6、rendercv:用 YAML/JSON 檔案建立 PDF 格式的簡歷

它支援解析 YAML 及 JSON 檔案的簡歷,建立 latex 檔案,然後渲染成 PDF 格式。目前僅有一款主題。

7、latexify_py:用 Python 程式碼生成 LaTeX 表示式

可以將 Python 原始碼或 AST 編譯為 LaTex,使用 IPython 來漂亮地列印編譯的函式。(star 6.5K)

8、localpilot:Mac 上的 Github Copilot

在 Macbook 本機上使用的程式設計助手,配置及使用非常簡易。(star 2.6K)

9、annoy:C++/Python 的近似最近鄰搜尋

用於搜尋空間中靠近給定查詢點的點,與其它同類庫的最大不同是可使用靜態檔案作為索引,可實現跨程式共享索引。被 Spotify 用作音樂推薦。(star 12.1K)

10、voyager:用於 Python 和 Java 的近似鄰搜尋庫

可對記憶體中的向量集合執行快速的近似最近鄰搜尋。也是出自 Spotify,每天被查詢數億次,扛得住海量使用者的請求。召回率比 annoy 高。

11、Test-Agent:國內首個測試行業大模型工具

它旨在構建測試領域的“智慧體”,融合大模型和質量領域工程化技術,促進質量技術代系升級。開源了測試領域模型 TestGPT-7B,該模型以 CodeLlama-7B 為基座。

12、waymax:用於自動駕駛研究的基於 JAX 的模擬器

Waymo 是 Google 旗下的自動駕駛公司,Waymax 是其開源的輕量級、多智慧體、基於 JAX 的自動駕駛模擬器,可輕鬆分發和部署在 GPU 和 TPU 等硬體加速器上。

?播客&影片

1、Python 的程式碼生成:拆解 Jinja

Jinja 的主要作者 Armin Ronacher 在 2012 年的演講影片,介紹了 Jinja 編譯器基礎結構的設計,為什麼這樣設計,以及不同版本的迭代發展過程。(附:演講的 PPT

2、讓我們聊一聊模板

Armin Ronacher 在 2014 年的演講影片,比較了 Jinja 和 Django 的模板,分析它們產生截然不同設計的歷史原因。(附:演講的 PPT

3、JupyterCon 2023 影片 86 個

JupyterCon 是一個專注於 Jupyter 應用和工具的年度活動,包括資料科學、機器學習、科學計算、資料視覺化、教育和科學研究等領域。

?贊助&支援

如果你喜歡週刊,請分享給其他需要的同學,讓更多人可以從中受益~

如果你覺得週刊有價值,請隨意讚賞買杯咖啡 進行支援!

如果你想幫助週刊辦得更好,歡迎向我們投稿或提出建議:投稿/建議通道

如果你是品牌方或廣告主,歡迎私信我,洽談贊助與合作事項。

?歡迎訂閱

  • 微信公眾號:除更新週刊外,還發布其它原創作品,並轉載一些優質文章。(可加好友,可加讀者交流群)
  • 部落格RSS:我的獨立部落格,上面有歷年原創/翻譯的技術文章,以及從 2009 年以來的一些隨筆。
  • Github:你可以獲取本週刊的 Markdown 原始檔,做任何想做的事!
  • 郵件:在 Substack 上開通的頻道,滿足你透過郵件閱讀時事通訊的訴求。
  • Telegram:除了釋出週刊的通知外,我將它視為一個“副刊”,補充發布更加豐富的資訊。
  • Twitter:我的關注列表裡有大量 Python 相關的開發者與組織的賬號。

相關文章