當前位置: 妍妍網 > 碼農

Python 潮流周刊#39:Rust 開發的效能超快的打包工具

2024-02-24碼農

請給「 Python貓 」加星標 ,以免錯過文章推播

你好,我是貓哥。這裏每周分享優質的 Python、AI 及通用技術內容,大部份為英文。本周刊開源,歡迎 投稿 [1] 。另有 電報頻道 [2] 作為副刊,補充釋出更加豐富的資訊,歡迎關註。

🦄文章&教程

1、 uv:Rust 開發的 Python 打包工具 [3]

Ruff 所屬團隊用 Rust 開發的一個利器:Python 的包解析與安裝器 uv !它被設計為 pip pip-tools 的直接替代品,不使用緩存時比它們快 8-10 倍。也可透過 uv venv 用作虛擬環境管理器,比 python -m venv 快 80 倍,比 virtualenv 快 7 倍。

解析和安裝Trio庫的效能對比

2、 Rye:願景延續 [4]

Rye 是 Flask 作者在去年 4 月釋出的 Python 打包和計畫管理工具,作者在文章中總結了它已實作的功能(下載 Python、管理虛擬環境、構建和釋出包、linting 和格式化、依賴管理等) ,介紹了自己的設計想法。(附1:作者的 16 分鐘教程視訊 Rye: a Hassle-Free Python Experience [5] )(附2:上一則分享的 uv 團隊已接管了 Rye,將來會融合成一個。 Rye Grows With UV [6]

3、 為什麽越來越多用 Rust 開發的庫? [7]

Rust 正在逐步取代 C 語言成為 Python 的高效能後端支撐。文章介紹了 Rust 相比 C 的優勢所在,介紹了用 Rust 開發的一些知名的 Python 庫。

4、 80 行 Python 實作一個搜尋引擎 [8]

這篇文章略微標題黨了,但是文章介紹的內容很完整:基於 RSS 的異步爬蟲、倒排索引、搜尋排名、基於 FastAPI 的 Web 網頁。可以學習搜尋引擎的工作原理,學習從數據獲取、數據解析、開放介面、到網頁呈現的計畫開發流程。

5、 如何計算 Python 中的 CPU 指令數? [9]

你知道執行 Python 的 print("Hello") 大約需要多少個 CPU 指令麽?答案是 17000。匯入 seaborn 則需要大約 20 億個。作者開發了 Cirron [10] 庫以計算 CPU 指令數、分支未命中數及程式碼的時間損耗等指標。

6、 Python 復用裝飾器程式碼 [11]

有多個裝飾器要加在不同的函式上,而且相同的裝飾器可能有不同傳參,如何復用這些裝飾器?問題初看可能不好理解,文章中有直觀範例和解決過程,可以加深你對裝飾器的理解和掌握高階運用。

7、 像專業人士一樣處理 Asyncio 任務 [12]

如何理解 Asyncio 中的 Task 物件?Asyncio 協程的工作原理是什麽?如何等待一個任務,又如何等待多個或一組任務?文章介紹了 Asyncio 的工作原理以及任務處理相關的函式用法。

8、 使用 textwrap 模組操作字串 [13]

文章介紹了 textwrap 庫的幾個主要功能,例如 shorten() 裁剪字串長度、wrap() 將字串等寬分割、dedent() 處理字串縮排等。

9、 總結 Python 版本間的主要變更點 [14]

Python 的一些新特性是在什麽版本引入的?作者為了方便,梳理了一些重要語法和標準庫的變更記錄,同時也指出了每個版本終止維護的時間(例如 Python 3.8 將在今年 10 月 EOL)。(附:這個 網站 [15] 可以檢視 Python 及很多計畫的 EOL 時間)

10、 將 Postgres 作為佇列使用 [16]

直接將資料庫作為佇列使用,效能會不會很受影響?作者測試的結果是影響很小。具體該如何實作將 Postgres 作為佇列使用?如何處理鎖和事務、任務重試、處理任務超時等問題?

11、 我在所有 Django 計畫中都用的 20 個包 [17]

Django 框架適用於構建復雜的 Web 計畫,作者介紹了自己常用的 20 軟體包,在 Django 自身的核心功能之外,提供了更豐富的功能。

12、 Python 元類的真實案例 [18]

Python 中的元類是什麽?為什麽要學習元類?這個高級特性並不常用,但值得學習了解。文章介紹了元類的工作原理,並用現例項子演示它的強大用途。

13、 一萬億行氣象數據的編程挑戰 [19]

一個編程挑戰計畫:有 100,000 個檔,每個檔 1000 萬行,計算每個氣象站的最低、平均和最高溫度。數據儲存在 S3 上,總大小 2.5 TB。作者給出了自己的實作(執行 8.5 分鐘),以及最佳化成本的方案。

🎁 Python潮流周刊 🎁每 30 期為一季,第一季的精華內容已整理成一篇,方便你隨時檢視。線上存取地址: Python 潮流周刊第一季精華合集(1~30) [20]

🐿️計畫&資源

1、 uv:效能極快的 Python 包安裝和解析器 [21]

用 Rust 開發的速度極快的 Python 包安裝器和解析器。Ruff 團隊作品。可直接替換 pip pip-tools virtualenv 常用命令。(star 6.6K)

2、 sqlite-web:基於 Web 的 SQLite 資料庫工具 [22]

基於 Flask 開發的 Web 端 SQLite 管理工具,視覺化管理資料庫、數據表、數據項和索引等,支持 JSON 和 CSV 格式檔的匯入匯出。(star 2.6K)

3、 celery-exporter:匯出 Celery 指標用於 Prometheus [23]

即時獲取 Celery 的任務狀態、工作執行緒、活動任務數等監控指標,遵循 Prometheus 匯出器最佳實踐,並利用 Celery-mixin 提供了 Grafana 儀表板及 Prometheus 告警功能。

4、 pyupgrade:自動升級 Python 較新版本的語法 [24]

一個強力的工具和 pre-commit 勾點,可以自動刪除冗余寫法、用新語法重寫過時的程式碼、用更優雅的寫法重構程式碼,等等。計畫文件中給出了很多例子,推薦閱讀。(star 3.2K)

# 兩個重寫成字典推導式的範例
-dict((a, b) for a, b in y)
+{a: b for a, b in y}
-dict([(a, b) for a, b in y])
+{a: b for a, b in y}

5、 ollama-python:Ollama Python 庫 [25]

支持 Python 3.8+,簡單快速整合 Llama 2、Code Llama、mistral、gemma 等大語言模型,可自訂客戶端,還可建立異步客戶端。

6、 web2pdf:將網頁轉換為 PDF 的 CLI [26]

一個命令列工具,可將網頁轉換為格式精美的 pdf。支持批次轉換、自訂樣式、附加 CSS、復雜布局、頁碼、目錄和分頁符等功能。

7、 natural-sql:文本生成 SQL 的大語言模型 [27]

NaturalSQL-7B 是擁有超高準確性的文本生成 SQL 大模型,在 SQL-Eval 基準測試中領先 GPT-3.5-turbo 和 claude-2,也領先於同數據規模的 sqlcoder-7b。

8、 rawdog:在 CLI 中自動生成並執行 Python 指令碼 [28]

Rawdog(具有確定性輸出生成的遞迴增強)是 RAG(檢索增強生成)的一種新穎替代方案,可以自己執行指令碼並獲取輸出作為上下文,然後再次呼叫自己。演示視訊的例子很驚艷。(star 1.6K)

9、 UFO:基於 UI 與 Windows 系統互動的 AI 代理 [29]

微軟新推出的 AI 代理框架,可無縫跨多套用操作,完成使用者的復雜任務。使用 GPT-Vision 的多模態功能來理解套用 UI,使用 Windows UI 自動化控制項互動。(star 1.9K)

基於不同素材自動編寫並行送信件

10、 toolong:檢視、跟蹤、合並和搜尋日誌檔(以及 JSONL)的終端套用 [30]

在命令列終端快速檢視日誌檔,支持即時尾隨、語法高亮、快捷搜尋、自動檢測時間戳合並日誌等功能,支持 JSONL 檔,可自動開啟 .bz 和 .bz2 檔。(star 2K)

11、 Owl:在本地執行的個人可穿戴 AI [31]

在可穿戴裝置上搭載 AI,傾聽和觀察你生活中發生的一切。支持 ESP 平台、Sony Spresense 或 Apple Watch 等硬體,支持本地和線上模型,多模態采集,說話人驗證等。

12、 hyperdiv:用 Python 構建響應式 Web UI [32]

一個用 Python 快速開發響應式 UI 套用的框架,具有內建元件、簡潔的即時模式語法和少量的工具樣板。支持 Shoelace 元件,支持 Markdown,整合 Chart.js 圖表,支持讀寫瀏覽器緩存,支持表單驗證等。

13、 fabric:使用 AI 增強人類 [33]

這個計畫旨在使每個人能將 AI 用於解決日常問題。它的方法是將問題拆解成很多獨立元件,使用結構化的清晰提示讓 AI 完成任務。(star 5.6K)

🐢播客&視訊

1、 Meta 喜歡 Python [34]

Meta 官方的一期播客節目,討論了開發團隊對最新 Python 版本的貢獻,包括允許自訂 JIT(如 Cinder)的新勾點、永生物件、對型別系統的改進、更快的推導式等等。Meta 對 Python 社群的貢獻確實很足哦~(附: 谷歌、微軟、Meta?誰才是 Python 最大的金主? [35]

2、 Talk Python To Me #449:使用 FastUI 構建 UI [36]

FastUI 是一個 Web 界面開發框架,可使用 React 構建響應式 Web 套用,而無需編寫任何 JavaScript 或接觸 npm。這期播客的嘉賓是該框架的作者。

🐼歡迎訂閱

  • 微信公眾號 [37] :除更新周刊外,還釋出其它原創作品,並轉載一些優質文章。(可加好友,可加讀者交流群)

  • 部落格 [38] 及 RSS [39] :我的獨立部落格,上面有歷年原創/轉譯的技術文章,以及從 2009 年以來的一些隨筆。

  • 信件 [40] 及 RSS [41] :在 Substack 上開通的頻道,滿足你透過信件閱讀時事通訊的訴求。

  • Github [42] :你可以獲取本周刊的 Markdown 原始檔,做任何想做的事!

  • Telegram [43] :除了釋出周刊的通知外,我將它視為一個「副刊」,補充釋出更加豐富的資訊。

  • Twitter [44] :我的關註列表裏有大量 Python 相關的開發者與組織的帳號。

  • 參考資料

    [1]

    投稿: https://github.com/chinesehuazhou/python-weekly

    [2]

    電報頻道: https://t.me/pythontrendingweekly

    [3]

    uv:Rust 開發的 Python 打包工具: https://astral.sh/blog/uv

    [4]

    Rye:願景延續: https://lucumr.pocoo.org/2024/2/4/rye-a-vision/

    [5]

    Rye: a Hassle-Free Python Experience: https://www.youtube.com/watch?v=q99TYA7LnuA

    [6]

    Rye Grows With UV: https://lucumr.pocoo.org/2024/2/15/rye-grows-with-uv/

    [7]

    為什麽越來越多用 Rust 開發的庫?: https://baincapitalventures.com/insight/why-more-python-developers-are-using-rust-for-building-libraries/

    [8]

    80 行 Python 實作一個搜尋引擎: https://www.alexmolas.com/2024/02/05/a-search-engine-in-80-lines.html

    [9]

    如何計算 Python 中的 CPU 指令數?: https://blog.mattstuchlik.com/2024/02/08/counting-cpu-instructions-in-python.html

    [10]

    Cirron: https://github.com/s7nfo/Cirron

    [11]

    Python 復用裝飾器程式碼: https://www.kawabangga.com/posts/5757

    [12]

    像專業人士一樣處理 Asyncio 任務: https://jacobpadilla.com/articles/handling-asyncio-tasks

    [13]

    使用 textwrap 模組操作字串: https://martinheinz.dev/blog/108

    [14]

    總結 Python 版本間的主要變更點: https://www.nicholashairs.com/posts/major-changes-between-python-versions/

    [15]

    網站: https://endoflife.date/python

    [16]

    將 Postgres 作為佇列使用: https://leontrolski.github.io/postgres-as-queue.html

    [17]

    我在所有 Django 計畫中都用的 20 個包: https://learndjango.com/tutorials/20-django-packages-i-use-every-project

    [18]

    Python 元類的真實案例: https://dev.to/anbagu/real-case-of-python-meta class-application-2pj8

    [19]

    一萬億行氣象數據的編程挑戰: https://blog.coiled.io/blog/1trc.html

    [20]

    Python 潮流周刊第一季精華合集(1~30): https://pythoncat.top/posts/2023-12-11-weekly

    [21]

    uv:效能極快的 Python 包安裝和解析器: https://github.com/astral-sh/uv

    [22]

    sqlite-web:基於 Web 的 SQLite 資料庫工具: https://github.com/coleifer/sqlite-web

    [23]

    celery-exporter:匯出 Celery 指標用於 Prometheus: https://github.com/danihodovic/celery-exporter

    [24]

    pyupgrade:自動升級 Python 較新版本的語法 : https://github.com/asottile/pyupgrade

    [25]

    ollama-python:Ollama Python 庫: https://github.com/ollama/ollama-python

    [26]

    web2pdf:將網頁轉換為 PDF 的 CLI: https://github.com/dvcoolarun/web2pdf

    [27]

    natural-sql:文本生成 SQL 的大語言模型: https://github.com/cfahlgren1/natural-sql

    [28]

    rawdog:在 CLI 中自動生成並執行 Python 指令碼: https://github.com/AbanteAI/rawdog

    [29]

    UFO:基於 UI 與 Windows 系統互動的 AI 代理: https://github.com/microsoft/UFO

    [30]

    toolong:檢視、跟蹤、合並和搜尋日誌檔(以及 JSONL)的終端套用: https://github.com/Textualize/toolong

    [31]

    Owl:在本地執行的個人可穿戴 AI: https://github.com/OwlAIProject/Owl

    [32]

    hyperdiv:用 Python 構建響應式 Web UI: https://github.com/hyperdiv/hyperdiv

    [33]

    fabric:使用 AI 增強人類: https://github.com/danielmiessler/fabric

    [34]

    Meta 喜歡 Python: https://engineering.fb.com/2024/02/12/developer-tools/meta-loves-python/

    [35]

    谷歌、微軟、Meta?誰才是 Python 最大的金主?: https://pythoncat.top/posts/2022-11-21-sponsors

    [36]

    Talk Python To Me #449:使用 FastUI 構建 UI: https://talkpython.fm/episodes/show/449/building-uis-in-python-with-fastui

    [37]

    微信公眾號: https://img.pythoncat.top/python_cat.jpg

    [38]

    部落格: https://pythoncat.top

    [39]

    RSS: https://pythoncat.top/rss.xml

    [40]

    信件: https://pythoncat.substack.com

    [41]

    RSS: https://pythoncat.substack.com/feed

    [42]

    Github: https://github.com/chinesehuazhou/python-weekly

    [43]

    Telegram: https://t.me/pythontrendingweekly

    [44]

    Twitter: https://twitter.com/chinesehuazhou

    如果你覺得本文有幫助

    請慷慨 分享 點贊 ,感謝啦