你好,我是貓哥。這裡每周分享優質的 Python 及通用技術内容,部分為英文,已在小标題注明。(标題取自其中一則分享,不代表全部内容都是該主題,特此聲明。)
首發于我的部落格:https://pythoncat.top/posts/2023-07-01-weekly
周刊的投稿通道已開放,請在 Github 項目中送出 issue:https://github.com/chinesehuazhou/python-weekly
文章&教程
- 本地部署開源大模型的完整教程:LangChain + Streamlit+ Llama (英)
一篇步驟清晰的教程,它使用 LangChain 及 Facebook 開源的 LLaMA 大語言模型搭建了一個基于文檔的問答助手,另外使用 Streamlit 建構出一個美觀的使用者界面。(附一篇中文的翻譯文 )
- Python Asyncio 協程對象開銷成本
一個 Python Asyncio 協程會占用有多少記憶體呢?文章的測試結論是約 2Kb。另外,文中還測試了以下的問題:每秒可建立多少個裸協程?每秒可處理多少個協程?使用uvloop 後,建立及處理協程任務,能有多少提升?
- 如何使用 asyncio.Runner 執行多個協程 (英)
asyncio.Runner 是 Python 3.11 中新增的功能,支援在同一事件循環中執行多個協程。文章主要内容:如何使用 asyncio.run() 運作多個協程,如何使用包裝方法運作多個協程,以及如何使用 asyncio.Runner 類在同一個事件循環中以自适應甚至有條件的方式執行協程。
- 不使用鎖的并發實作 (英)
在并發程式設計中,通常需要使用鎖,但是不應該濫用鎖。這篇文章探讨了如何盡量不依賴鎖來實作并發,示範的例子是生成短連結,主要的思想是“請求寬恕”而不是“提前檢查”、使用 PostgreSQL 資料庫提供的功能。
- 貢獻 CPython 日記 (3) CPython 是如何運作的
文章介紹了 CPython 是如何把 Python 代碼跑起來的,主要過程:詞法分析、文法分析、編譯到位元組碼、執行位元組碼。
- Python JIT 編譯器 - 即時編譯 (英)
文章探讨了 JIT 編譯的概念及其優點,并深入分析了主流的 Python JIT 編譯器的優缺點(如 PyPy、Numba 和 Cython),介紹了在 Python 中使用 JIT 編譯器的最佳實踐和準則。
- CPython、Pypy、MicroPython、Jython……都是些什麼? (英)
當我們說 Python 時,通常指的是官方實作的 CPython,但還有很多的“Python”,比如 Pypy、Jython、MicroPython、Brython、RustPython 等等,還有很多像是新“Python”的東西,比如 Nuitka、WinPython、Psyco、Pyjion 等等。文章解釋了相關的概念和工具。
- Python APScheduler:感受 AsyncIOScheduler 的強大 (英)
APScheduler 是一個排程和自動化任務工具,它的 AsyncIOScheduler 支援排程異步函數和協程,文章介紹了它的功能、優點以及如何優化異步任務排程需求。
- 在生成代碼時避免産生技術債務 (英)
GPT 和其它大語言模型可以快速生成大量代碼,但這也可能導緻很多的混亂代碼。文章探讨了如何改進這些工具生成的代碼,并将其融入到項目中的幾種方法,包括采用專家角色、提供示例、遵循最佳實踐、遵循标準和明确指南以及代碼放置的恰當位置等。
- 當 NumPy 太慢時 (英)
在不考慮并行處理的情況下,如何提升 Numpy 性能?NumPy 有三個固有瓶頸(急切執行、通用編譯代碼和向量化導緻的高記憶體使用率)。針對這些瓶頸,文章介紹四種解決方案:手動優化代碼、使用 JAX 作即時編譯、使用 Numba 作即時編譯,以及使用提前編譯。
- Numba 教程:使用 JIT 編譯加速 Python 代碼 (英)
Numba 是一個專用的即時編譯器,通過将 Python 代碼編譯為高效的機器代碼來消除解釋執行的開銷,進而提升性能。文章介紹了 Numba 的功能、内部原理、主要用法和常見問題。
- 自動化提升 Python 代碼品質 (英)
如何使用較少的時間和精力來提升代碼的品質?文章介紹了一些提升代碼品質的工具(flake8、Black、isort、mypy、bandit等),以及使用 IDE、CI 和 pre-commit 等方式自動化調用這些工具。
- 使用 PandasAI 增強資料分析 (英)
PandasAI 是最近火爆的庫,為 Pandas 內建了 AI 對話功能,可簡化資料操作。文章介紹了 PandasAI 作複雜查詢與圖表可視化的方法,以及介紹了它提供的十幾個友善好用的函數。
- 寫單元測試的最佳實踐 (英)
單元測試的好處無須贅述,但是寫單測卻是開發者最讨厭的事情之一。文章羅列了 10 條寫單元測試的最佳實踐,介紹了手工寫單元測試的步驟,最後介紹了使用 Codium.AI 自動化編寫測試的方法。
- Netflix 如何安全地遷移到 GraphQL (英)
Netflix 官方的一篇部落格,介紹了在将手機 APP 安全地從 Falcor 遷移到 GraphQL 的過程中,所采用的三種測試政策:AB 測試、Replay 測試和 Sticky Canaries。AB 測試用于評估新功能對客戶的影響,Replay 測試用于驗證遷移的正确性,Sticky Canaries 用于驗證性能和業務名額。
Python潮流周刊已免費釋出了 9 期,通路下方連結,即可檢視全部内容:https://pythoncat.top/tags/weekly
️項目&資源
- PyGWalker:将 pandas 資料轉換為 Tableau 樣式的可視化界面 (中英)
一個在 Jupyter Notebook 環境中運作的可視化探索式分析工具,僅一條指令即可生成一個可互動的圖形界面,以類似 Tableau/PowerBI 的方式,通過拖拽字段進行資料分析。(star 6.5K)
- jnumpy:快速用 Julia 編寫 Python C 擴充 (英)
用 Julia 為 Python 寫高性能的 C 擴充,提速約 200x。(@xgdgsc 投稿)
- jupyter-ai:JupyterLab 的生成式 AI 擴充 (英)
JupyterLab 官方提供的生成式 AI 擴充,主要提供了:%%ai 指令、原生的聊天 UI 頁面、支援大量平台的大語言模型(AI21、Anthropic、Cohere、Hugging Face、OpenAI、SageMaker 等)。
- broadcast-service: 一個強大的 Python 釋出訂閱者架構
一個釋出訂閱者架構,支援同步異步排程、定時任務、主題管理、釋出訂閱者回調等功能。(@Zeeland 投稿)
- cushy-storage: 一個基于磁盤緩存的 ORM 架構
一個基于磁盤緩存的 ORM 架構,可對基本資料類型及自定義的資料通過 ORM 進行增删改查,支援多種序列化操作和資料壓縮方式。(@Zeeland 投稿)
- giskard:專用于 ML 模型的測試架構 (英)
如何測試機器學習模型、要涵蓋哪些問題、如何實施測試?這個架構可掃描數十種漏洞(性能偏差、資料洩漏、不魯棒性、虛假關聯、過度自信、信心不足、不道德問題等),并基于結果生成特定領域的測試套件。(star 1K)
- DragGAN:基于點的互動式圖像編輯 (英)
本周最火項目,可在圖像上通過拖動點的方式,生成想要的新圖像,非常驚豔!(star 28K)
- plumbum: 永遠不要再寫 shell 腳本 (英)
除了類似 shell 的文法和友善的快捷方式外,這個庫還提供了本地和遠端指令執行(通過 SSH)、本地和遠端檔案系統路徑、簡單的目錄和環境操作、以及一個可程式設計的 CLI 工具包。(star 2.6K)
- threestudio:用于生成 3D 内容的統一架構 (英)
支援用文本提示、單個圖像和少量鏡頭圖像建立 3D 内容。支援多種模型,如 ProlificDreamer、DreamFusion、Magic3D、Score Jacobian Chaining,等等。(star 1.8K)
- rembg:一個删除圖像背景的工具 (英)
支援删除圖像的背景,支援多種使用方式(cli、庫、docker)和多種強大的功能。(star 10.5K)
關于周刊
Python 潮流周刊,由豌豆花下貓主理,精心篩選國内外的 250+ 資訊源,為你挑選最值得分享的文章、教程、開源項目、軟體工具、播客和視訊、熱門話題等内容。願景:幫助所有讀者精進 Python 技術,并增長職業和副業的收入。
内容創作要花費大量的時間和精力,如果你覺得有幫助,請随意贊賞、買杯咖啡或在愛發電進行支援!如果你喜歡本周刊,請轉發分享給其他需要的同學,讓更多人可以從中受益~