當前位置: 妍妍網 > 碼農

Python 潮流周刊#40:白宮建議使用 Python 等記憶體安全的語言

2024-03-02碼農

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

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

🦄文章&教程

1、 白宮建議使用 Python 等記憶體安全語言 [3]

最近,白宮釋出了一份報告,建議使用記憶體安全的程式語言。去年 CISA、NSA 等機構聯合釋出的報告列出了記憶體安全的語言有 C#、Go、Java、 Python 、Rust 及 Swift。PSF 這篇文章介紹了 Python 在記憶體安全性方面所做的工作,包括封裝底層程式碼、從 C 向 Rust 遷移、使用編譯器選項強化 C 程式碼構建。

CSI表中對Python的簡短描述

2、 回顧 Requests 庫的問題 [4]

文章作者是 Requests 的核心維護者之一,他列舉了這個庫做得糟糕的多個地方,也指出了很多想改進卻沒有做到的原因。文末的結語說:「the project feels dead」。這讓人感覺很難受。本周刊 第26期 [5] 分享過該庫作者 KR 的道歉文,然而社群內幾無波瀾,後來看到 KR 失業,從推文感覺他精神狀態很糟糕,更讓人難受了。(投稿by@frostming90)

3、 Python 的 UV 工具確實相當不錯 [6]

上期周刊分享的可替換 pip uv 庫,你用了麽?感覺如何啊?文章作者給出了積極反饋,分享了自己一些配置檔的前後對比。

4、 Python 生成器未得到充分利用 [7]

Python 生成器的作用是能節省記憶體,這篇文章用很明白的例子對比了兩種記憶體使用情況,讓我們感受到生成器的好處,同時,文章也指出了需要避免的一些使用陷阱。

5、 使用 Python 作高級 Web 抓取:從任意網站抓取數據 [8]

文章討論了從 Web 抓取內容的一些高級技術,話題包括如何更好處理 Cookie 及自訂請求頭、什麽是 TLS 指紋以及如何避免它、需要註意的常見 HTTP 請求頭、在發出 HTTP 請求時如何整合指數回退重試,等等。

6、 Django REST 框架 + Vue 對比 Django + HTMX [9]

兩種 Web 開發框架的組合:DRF + Vue 以及 Django + HTMX,它們分別是如何使用的,各自又有哪些優勢和劣勢呢?文章用這兩個組合分別實作同樣的功能,分析了兩組技術棧的差異,羅列了一份比對清單,可方便我們更好地作技術選型。

7、 可組合數據系統之路:對過去 15 年和未來的思考 [10]

文章出自 pandas 庫兼【Python數據分析】一書的作者 Wes McKinney,回顧了他從 2008 年以來在數據科學領域所做的事情和轉變,同分時析和思考了模組化、互操作性和可組合性的未來趨勢。

8、 用 Django 作 SQLite 基準測試 [11]

作者分別調整 SQLite 的一些主要配置項來作基準測試,另外也比較了 SQLite 和 PostgreSQL 的效能。簡短結論:啟用 WAL 模式、使用 IMMEDIATE 事務、 synchronous=NORMAL 和記憶體對映 I/O 對吞吐量的影響很小。

9、 Python 3.13 的 JIT 是如何實作的? [12]

文章介紹了 Python 最新正在開發中的 JIT 是如何實作的,並嘗試安裝了開發版本,然後與無 JIT 版本作效能比較。目前 JIT 版本的效能反而慢於普通版本,官方仍需繼續努力最佳化。

10、 Python 網頁抓取的終極指南 [13]

一篇詳細的爬蟲教程,介紹了如何使用 BeautifulSoup、Scrapy 和 Selenium 等庫實作網頁抓取,如何克服復雜網頁、限速、反爬、動態 javascript 等挑戰。

11、 為簡單架構作辯護 [14]

Wave 是一家僅有 70 名工程師但估值 17 億美元的公司,其產品只是一款標準的 CRUD 程式,是構建在 Postgres 之上的 Python 單體架構。文章解釋了為什麽要選擇這樣的架構,解釋了這樣選型的合理性,以及為了保持它而克服的相關難題和選用的技術方案。

12、 關於「排程」的內部原理 [15]

一篇非常深度的長文,深入探討了「並行」,解釋了單執行緒伺服器如何透過異步 IO 和事件驅動編程來處理數以百萬計的任務。討論了實作並行的各種方法和工具,不同程式語言的實作。文中有不少動畫,可方便讀者理解。

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

🐿️計畫&資源

1、 ingestr:用單個命令在任何資料庫間無縫復制數據 [17]

這是一個 CLI 工具,使用簡單的命令即可實作跨資料庫的內容復制。支持增量載入: append merge delete+insert 模式。(star 1.3K)

2、 justpath:在 Windows 和 Linux 上檢查和最佳化 PATH 環境變量 [18]

一個用於管理作業系統 PATH 環境變量的命令列工具,典型功能包括:篩選目錄、辨識和清理無效配置、PATH 轉儲為 JSON、建立新的環境變量、統計數量。

3、 mountaineer:用於 Python 和 React 的內建電池的 Web 框架 [19]

全棧的 Web 開發框架,主要特點:全棧的型別提示、友好的服務通訊及數據繫結、伺服器端渲染、對網頁作靜態分析的增強校驗、等等。

4、 generate:一個 API 存取國內外大模型平台 [20]

使用一個統一的 API 存取大模型,特點:統一的 API、支持多模態、支持 10+ 大模型平台、異步&流式和並行、內建電池、輕量化、高品質程式碼。(投稿by@wangyuxinwhy)

5、 StringZilla:將 C、C++、Python、Rust 和 Swift 的字串速度提高 10 倍 [21]

「由於低效的字串操作,世界每年至少浪費 1 億美元」。這個計畫可替換程式語言原生的字串型別,提高效能。可加速精確和模糊字串匹配、編輯距離計算、排序、延遲計算範圍以避免記憶體分配,甚至隨機字串生成器。(star 1.4K)

6、 DrissionPage: 網頁自動化工具,能控制瀏覽器,也能收發封包 [22]

采用全自研內核,對比 Selenium 有以下優點:無 webdriver 特征、跨 iframe 尋找元素、把 iframe 看作普通元素、可同時操作多個分頁、可直接讀取瀏覽器緩存來保存圖片、可對整個網頁截圖,等等。(star 4.1K)

7、 Daft:Rust 開發的面向雲的分布式 Python DataFrame [23]

用 Rust 開發的用於大規模數據處理的分布式查詢引擎,熟悉的互動式 API、專註於查詢最佳化、整合數據目錄、豐富的多模態型別系統、專為雲而構建。(star 1.4K)

8、 magika:使用深度學習來檢測檔內容的型別 [24]

谷歌最新開源作品,使用 AI 來檢測檔型別,具有 99% 的精確度。可作為 Python 命令列和 API 使用,支持超過 100 中檔型別,每個檔的推理時間約為 5 毫秒。(star 7K)

magika與其它工具的得分對比圖

9、 frappe:低程式碼 Web 框架,使用 Python 和 Javascript [25]

內建電池的全棧 Web 框架,低程式碼,伺服器端使用 Python 和 MariaDB,特點:後設資料優先、管理員界面、開箱即用的角色和許可權、支持外掛程式、支持任務排程、信箱管理、多租戶,等等。(star 6.3K)

10、 Umi-OCR: 開源、免費的離線 OCR 軟體,支持螢幕擷取/批次匯入圖片 [26]

解壓即用,離線執行,無需網路;內建高效率的離線OCR引擎,內建多種語言辨識庫;支持命令列、HTTP介面等多種呼叫方式;截圖OCR / 批次OCR / PDF辨識 / 二維碼。(star 19.4K)

11、 xonsh:Python 開發的跨平台的類 Unix 的 shell [27]

這個計畫是 Python 3.6+ 的超集,帶有 shell 原語。可以作為 shell 和 Python 單獨使用,也可以在 Python 裏寫 shell,在 shell 裏寫 Python。(star 7.8K)

🐼歡迎訂閱

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

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

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

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

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

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

  • 參考資料

    [1]

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

    [2]

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

    [3]

    白宮建議使用 Python 等記憶體安全語言: https://pyfound.blogspot.com/2024/02/white-house-recommends-.html

    [4]

    回顧 Requests 庫的問題: https://blog.ian.stapletoncordas.co/2024/02/a-retrospective-on-requests

    [5]

    第26期: https://pythoncat.top/posts/2023-11-11-weekly

    [6]

    Python 的 UV 工具確實相當不錯: https://micro.webology.dev/2024/02/29/pythons-uv-tool.html

    [7]

    Python 生成器未得到充分利用: https://www.slashtmp.io/posts/generators/

    [8]

    使用 Python 作高級 Web 抓取:從任意網站抓取數據: https://jacobpadilla.com/articles/advanced-web-scraping-techniques

    [9]

    Django REST 框架 + Vue 對比 Django + HTMX: https://testdriven.io/blog/drf-vue-vs-django-htmx/

    [10]

    可組合數據系統之路:對過去 15 年和未來的思考: https://wesmckinney.com/blog/looking-back-15-years/

    [11]

    用 Django 作 SQLite 基準測試: https://blog.pecar.me/django-sqlite-benchmark

    [12]

    Python 3.13 的 JIT 是如何實作的?: https://zhuanlan.zhihu.com/p/682997904

    [13]

    Python 網頁抓取的終極指南: https://proxiesapi.com/articles/web-scraping-in-python-the-complete-guide

    [14]

    為簡單架構作辯護: https://danluu.com/simple-architectures/

    [15]

    關於「排程」的內部原理: https://tontinton.com/posts/scheduling-internals/

    [16]

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

    [17]

    ingestr:用單個命令在任何資料庫間無縫復制數據: https://github.com/bruin-data/ingestr

    [18]

    justpath:在 Windows 和 Linux 上檢查和最佳化 PATH 環境變量: https://github.com/epogrebnyak/justpath

    [19]

    mountaineer:用於 Python 和 React 的內建電池的 Web 框架: https://github.com/piercefreeman/mountaineer

    [20]

    generate:一個 API 存取國內外大模型平台: https://github.com/wangyuxinwhy/generate

    [21]

    StringZilla:將 C、C++、Python、Rust 和 Swift 的字串速度提高 10 倍: https://github.com/ashvardanian/StringZilla

    [22]

    DrissionPage: 網頁自動化工具,能控制瀏覽器,也能收發封包: https://github.com/g1879/DrissionPage

    [23]

    Daft:Rust 開發的面向雲的分布式 Python DataFrame: https://github.com/Eventual-Inc/Daft

    [24]

    magika:使用深度學習來檢測檔內容的型別: https://github.com/google/magika

    [25]

    frappe:低程式碼 Web 框架,使用 Python 和 Javascript: https://github.com/frappe/frappe

    [26]

    Umi-OCR: 開源、免費的離線 OCR 軟體,支持螢幕擷取/批次匯入圖片: https://github.com/hiroi-sora/Umi-OCR

    [27]

    xonsh:Python 開發的跨平台的類 Unix 的 shell: https://github.com/xonsh/xonsh

    [28]

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

    [29]

    部落格: https://pythoncat.top

    [30]

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

    [31]

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

    [32]

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

    [33]

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

    [34]

    Telegram: https://t.me/pythontrendingweekly

    [35]

    Twitter: https://twitter.com/chinesehuazhou

    如果你覺得本文有幫助

    請慷慨 分享 點贊 ,感謝啦