你好,我是貓哥。這裡每週分享優質的 Python、AI 及通用技術內容,大部分為英文。本週刊開源,歡迎投稿。另有電報頻道作為副刊,補充發布更加豐富的資訊。
?產品推薦
Walles.AI 是一款適用於所有網站的瀏覽器外掛,支援 GPT4 問答、ChatPDF、網頁內容解釋及翻譯、生成高質量文章、與 Notion 等工具協同、線上摘要 Youtube 影片等。立即前往官網,免費使用(請在 PC 端訪問):安裝地址
?文章&教程
很值得推薦的文章。正文部分介紹了最佳化程式的四種方法:使用更好的演算法、使用更好的資料結構、使用底層的程式語言、以及接受不太精確的解決方案。文章開頭和結尾則提出了一些教訓:我們對於效能最佳化問題容易過度樂觀、我們可能只顧效能而犧牲了正確性、不該作過早和複雜的最佳化、最佳化的廣度比最佳化的深度更重要。
由於 GIL 的限制,因此在 Python 中使用執行緒池需要注意業務是 CPU 密集型任務還是 IO 密集型任務,這將導致線上程數量和執行緒池目標上的不同選擇。
3、是時候改變了:datetime.utcnow() 現已被棄用
Python 3.12 版本中datetime.datetime
的 utcnow()
與 utcfromtimestamp()
方法已被標註為“deprecated”,將在未來版本中刪除。文章介紹了它們的缺陷,解釋了為什麼它們會被棄用。替代的方法分別是:datetime.now()
和 datetime.fromtimestamp()
。
介紹瞭如何使用 Nginx+Gunicorn+Supervisor、Nginx+uWSGI+Supervisor、Waitress、Meinheld 等不同方案部署 Flask 應用,分析了它們的優缺點。
介紹了 CPython 全域性直譯器鎖的實現細節,介紹了從 Python 3.9 到目前 3.13 開發版之間的變化。其中有一項很大的差別,在 3.9 及早期版本,GIL 在執行很多位元組碼時會釋放,而在 3.13 版本,只在少數字節碼上檢查是否釋放 GIL。
6、使用 pip-compile 和 pip-tools 作 Django 的依賴項管理
Python 的依賴管理有很多選擇,文章介紹了 pip-compile 和 pip-tools 的組合方案。
作者將程式的 bug 分成四類:型別錯誤和 linting 錯誤、匯入時異常、執行時異常、靜默的錯誤。處理的策略是減少出現後面的錯誤型別,將其變為前面的錯誤處理。
Python 的型別提示正在逐漸流行,但是,它在核心開發者群體中已經普及到什麼程度了呢?作者經過分析,給出了這樣的資料:所有核心開發者中,大約 53% 的人最近有開源專案,其中 39% 的人使用型別提示。近 3 年裡加入團隊的人中,有 76% 使用型別提示。
9、記一次用 Python 的 ast 模組將 Flask 專案轉為 Quart 的嘗試
作者為了使用 OpenAI 返回的非同步迭代器內容,將不支援非同步的 Flask 專案重構成了支援非同步的 Quart。但手動修改的工作量太大,因此他想到透過解析 ast 來修改,提升專案轉換的效率。
文章使用了大量直觀的圖形展示 Numpy 資料的分佈以及資料變化過程,讓你輕鬆掌握 Numpy 資料操作。
傳統觀點認為組合優於繼承,但作者認為 Python 不能很好地支援,若教條式使用組合,只會引入問題,因此作者提供了一種簡單實現的思路。
12、選擇正確的資料儀表板工具:Streamlit 和 Shiny 的獨特優勢
在資料驅動關鍵決策的時代,互動式儀表板已成為商業、科學研究等行業不可或缺的工具。Streamlit 和 Shiny(包括 RShiny 及 PyShiny)是功能強大的框架,文章介紹了它們各自的優勢。
?Python潮流週刊?我會在 電報頻道 分享很多不收錄在週刊裡的內容,目前已有 1200+ 同學關注,歡迎你的加入!
?️專案&資源
1、screenshot-to-code:利用截圖生成 HTML/Tailwind/JS 程式碼
超級火爆的新專案,它使用 GPT-4 Vision 生成程式碼,使用 DALL-E 3 生成與截圖相似的外觀。甚至可以輸入 URL 來實時克隆一個網站!(star 19.4K)
2、sqlalchemy_data_model_visualizer:將SQLalchemy資料模型轉換為漂亮的SVG圖表
將 SQLAlchemy ORM 模型生成高質量的視覺化效果,使用 Graphviz 將每個模型呈現為有向圖,更容易理解資料庫表之間的關係。
它透過將提示、模型引數及模型密切相關的邏輯與應用程式碼分離,降低複雜度。SDK 是與模型無關的,可擴充套件到任何生成式 AI 模型。
4、PyNest:基於 FastAPI 構建的框架,遵循 NestJS 的模組化架構
可以讓你輕鬆構建可擴充套件且可維護的 API,支援依賴注入、型別註釋、裝飾器和程式碼生成。
它利用風格擴散和對抗訓練與大型語音語言模型 (SLM) 來實現人類水平的 TTS 合成。(star 2.7K)
6、pyjokes:程式設計師的一句話笑話(笑話即服務) (github.com)
安裝後,只需從命令列呼叫 pyjoke 或將其新增到 .bashrc 檔案中,每次開啟終端時都會看到一個笑話。
7、gTTS:用於與 Google 的文字轉語音 API 互動
用於呼叫 Google Translate 的文字轉語音 API,提供可定製的語音特定的句子分詞器,以及可定製的文字前處理器。(star 2K)
8、chatfairy:極簡的網頁版聊天室,只依賴 Flask
極簡的聊天室應用,前後端程式碼在僅 115 行的單檔案中,使用 SSE 作後端訊息推送,不依賴websocket,支援使用者認證、多使用者聊天、上下線通知、路由保護。(投稿自@yuxiaoy1)
9、streamlit-shadcn-ui:在 streamlit 中使用 shadcn-ui 元件
Streamlit 的元件選擇相對侷限,且樣式比較古老。這個專案將前端流行的 shadcn 元件庫引入到 Streamlit 當中,UI 更為美觀。
10、video-subtitle-remover:用 AI 去除圖片/影片的硬字幕/水印
可無損解析度將影片中的硬字幕去除,生成去除字幕後的檔案,利用 AI 填充原字幕區域;支援自定義字幕位置,支援全影片自動去除所有文字。
11、flowty-realtime-lcm-canvas:使用 LCM 和 gradio 庫的草圖到影像演示
將你的草稿圖實時變成生動的影像,可更改 UI 中的模型 ID 來使用不同的模型。(star 1.5K)
可執行高精度天文學計算,用於查詢行星、彗星或小行星的位置,確定特定星體的位置,計算月球各階段的日期,天文座標系轉換,確定春分和冬至的日期,等等。
本文首發於:https://pythoncat.top/posts/2023-11-25-weekly