Jupyter Notebook 7 發(fā)布了,無(wú) GIL 提案?jìng)鱽?lái)大好消息!
你好,我是貓哥。這里每周分享優(yōu)質(zhì)的 Python、AI 及通用技術(shù)內(nèi)容,大部分為英文,已在小標(biāo)題注明。(標(biāo)題取自其中一則分享,不代表全部?jī)?nèi)容都是該主題,特此聲明。)
本周刊精心篩選國(guó)內(nèi)外的 250+ 信息源,為你挑選最值得分享的文章、教程、開(kāi)源項(xiàng)目、軟件工具、播客和視頻、熱門(mén)話(huà)題等內(nèi)容。愿景:幫助所有讀者精進(jìn) Python 技術(shù),并增長(zhǎng)職業(yè)和副業(yè)的收入。
周刊已開(kāi)通 Telegram 頻道,歡迎加入:https://t.me/pythontrendingweekly
??文章&教程
1、Jupyter Notebook 7 隆重發(fā)布[1] (英)
Jupyter Notebook 大版本更新,亮點(diǎn)包括實(shí)時(shí)協(xié)作、交互式調(diào)試、目錄、主題和深色模式、國(guó)際化、改進(jìn)的可訪問(wèn)性、移動(dòng)設(shè)備上的緊湊視圖。
2、Python 中的弱引用與基礎(chǔ)類(lèi)型支持情況探究[2]
Python 的基礎(chǔ)類(lèi)型 Int、List、Dict、Tuple、Str 不支持弱引用,而 Object、Type、Set 等類(lèi)型卻支持弱引用,為什么會(huì)出現(xiàn)這種情況呢?文章給出了自己的分析。
3、分布式鎖的介紹與 Python 實(shí)現(xiàn)[3]
什么情況下要使用分布式鎖?如何用 py-redis 實(shí)現(xiàn)分布式鎖,加鎖與解鎖的流程是怎樣的?加鎖的超時(shí)時(shí)間有什么注意點(diǎn),如何實(shí)現(xiàn) WatchDog 給鎖自動(dòng)續(xù)約?
4、釋放 PyScript 的力量:在 HTML 中運(yùn)行 Python 代碼[4] (英)
一篇 PyScript 入門(mén)教程,介紹了安裝、基礎(chǔ)知識(shí)、配合 Flask 的使用以及高級(jí)功能。
5、通過(guò)并發(fā)實(shí)現(xiàn)更快的文件 I/O[5] (英)
什么是文件 I/O,為什么它會(huì)比主內(nèi)存 I/O 慢很多?文件 I/O 的速度與哪些因素有關(guān)?有哪些提升文件 I/O 性能的方法?
6、如何編寫(xiě)完美干凈的 Python 代碼?[6] (英)
文章介紹了一些最佳編程實(shí)踐,涵蓋代碼結(jié)構(gòu)、pre-commit、類(lèi)型提示、文檔字符串、lint、Pydantic、拼寫(xiě)檢查、測(cè)試等方面。
7、Python 日志記錄:對(duì)比最流行的 6 個(gè)庫(kù)[7] (英)
文章詳細(xì)對(duì)比了當(dāng)前最為流行的 6 種日志框架:logging、loguru、structlog、Eliot、logbook 與 picologging 。最推薦的無(wú)疑是前兩個(gè),其它權(quán)當(dāng)興趣嘗鮮吧。
8、使用 cProfile 分析模塊級(jí)代碼[8] (英)
如何使用 cProfile 來(lái)對(duì) Python 代碼進(jìn)行性能分析?文章簡(jiǎn)單介紹了它的用法,并給出了上下文管理器與裝飾器兩種高級(jí)用法。
9、掌握 Python 函數(shù)式編程[9] (英)
文章介紹了函數(shù)式編程的優(yōu)點(diǎn)、Python 對(duì)函數(shù)式編程的支持、最佳實(shí)踐以及編寫(xiě) Python 程序時(shí)要避免的錯(cuò)誤。
10、Python 3.12 預(yù)覽版:更直觀和一致的 f-string[10] (英)
在 Python 3.12 之前,f-string 有什么限制?即將發(fā)布的 3.12 版本會(huì)帶來(lái)哪些變化呢?新功能前瞻:嵌入表達(dá)式可以重用引號(hào)、f-string 中允許使用反斜杠、多行表達(dá)式中可寫(xiě)注釋、任意級(jí)別的 f-string 嵌套、優(yōu)化了 f-string 的錯(cuò)誤提示……
11、使用 AsyncMixin 創(chuàng)建可等待的構(gòu)造函數(shù)[11] (英)
介紹了如何使用名為 AsyncMixin
的 mixin 在 Python 中創(chuàng)建異步構(gòu)造函數(shù)。
12、在 Python 中查找并修復(fù)不安全的直接對(duì)象引用[12] (英)
不安全的直接對(duì)象引用 (IDOR) 是一種安全漏洞,文章介紹了這種漏洞的危害,如何識(shí)別并修復(fù) IDOR 漏洞。
13、使用異步 Python 克服性能瓶頸:深入研究 CPU 密集型代碼[13] (英)
作者介紹了如何識(shí)別和優(yōu)化特征存儲(chǔ)中 CPU 密集型代碼,從而提升核心模型的性能。事件循環(huán)延遲是什么,如何監(jiān)控異步代碼消耗的時(shí)間?
14、PEP-720 交叉編譯 Python 包[14] (英)
交叉編譯是指在一臺(tái)計(jì)算機(jī)上編譯適用于另一種體系結(jié)構(gòu)的程序。這份 PEP 試圖揭示交叉編譯遇到的挑戰(zhàn),并以此進(jìn)行改進(jìn)。
15、PEP-722 單文件腳本的依賴(lài)關(guān)系規(guī)范[15] (英)
在項(xiàng)目中記錄和管理第三方庫(kù),這有很多解決方案。但是,如何給單文件管理三方庫(kù)依賴(lài)呢?這份 PEP 提出了一種很簡(jiǎn)單的規(guī)范格式。
???項(xiàng)目&資源
1、Resume-Matcher:比較簡(jiǎn)歷與職位描述,按照打分排名[16] (英)
基于 AI 的簡(jiǎn)歷匹配器,根據(jù) JD 的關(guān)鍵詞給簡(jiǎn)歷打分。使用 Qdrant(一種高效的向量相似度搜索工具)來(lái)衡量簡(jiǎn)歷與 JD 的匹配程度。
2、awesome-python-htmx:Python 中使用 htmx 作 Web 開(kāi)發(fā)的精選內(nèi)容[17] (英)
PyHAT 旨在 Python 中推廣 htmx+ASGI+TailwindCSS,這個(gè)項(xiàng)目列出了一些入門(mén)資源、教程、設(shè)計(jì)理論、周邊生態(tài)等等。
3、CodeGeeX2: 更強(qiáng)大的多語(yǔ)言代碼生成模型[18]
基于 ChatGLM2-6B 基座語(yǔ)言模型,在 Python 上達(dá)到 35.9% 的 Pass@1 一次通過(guò)率,超越規(guī)模更大的 StarCoder-15B。CodeGeeX 插件支持 VS Code、 IntelliJ IDEA、PyCharm、GoLand、WebStorm、Android Studio 等IDE。(star 1K)
AI編程助手
4、Chinese-Llama-2-7b: 第一個(gè)能下載運(yùn)行的中文 LLaMA2 模型[19]
開(kāi)源可商用的中文版 Llama2 模型及中英文 SFT 數(shù)據(jù)集,兼容適配所有針對(duì)原版 llama-2-chat 模型的優(yōu)化。(star 1K)
5、docker-llama2-chat: LLaMA2 (official / 中文版 / INT4 / llama2.cpp)[20]
中文開(kāi)源項(xiàng)目,三步上手 LLaMA2,作者寫(xiě)了一系列教程博客。
6、taipy:將數(shù)據(jù)和 AI 算法轉(zhuǎn)變?yōu)橥暾?Web 應(yīng)用[21] (英)
一個(gè)全棧項(xiàng)目,快速將數(shù)據(jù)和 AI 構(gòu)建出 Web 應(yīng)用。
前后端示意圖
7、pyrasite:將代碼注入正在運(yùn)行的 Python 進(jìn)程[22] (英)
允許在運(yùn)行中的 Python 進(jìn)程里注入自定義代碼,以實(shí)現(xiàn)動(dòng)態(tài)調(diào)試、修改變量值、破解加密、分析運(yùn)行時(shí)行為等功能。支持多種注入方式,包括注入到 Python 解釋器、注入到指定函數(shù)、注入到特定線(xiàn)程等。(star 2.7K)
8、python-manhole:調(diào)試運(yùn)行中的 Python 程序[23] (英)
在運(yùn)行中的 Python 進(jìn)程里提供交互式的調(diào)試和監(jiān)控功能,利用 Python 的"ptrace"機(jī)制,通過(guò)在目標(biāo)進(jìn)程中注入代碼,可通過(guò) SSH 或 telnet 等協(xié)議連接,實(shí)現(xiàn)遠(yuǎn)程交互。與 gevent 和 eventlet 兼容,有少許限制。
9、vscode-python:使用 VScode 和 Docker 設(shè)置 Python 開(kāi)發(fā)環(huán)境[24] (英)
一個(gè)非常完備的教程項(xiàng)目,指導(dǎo)在 Docker 上運(yùn)行 Python、設(shè)置開(kāi)發(fā)環(huán)境與容器擴(kuò)展、測(cè)試與部署等。
圖片
使用VScode和Docker的開(kāi)發(fā)工作流
10、webdriver_manager:Python 的 Webdriver 管理器[25] (英)
使用 Selenium 與 Playwright 等框架時(shí),要管理各種瀏覽器驅(qū)動(dòng)。這個(gè)項(xiàng)目簡(jiǎn)化了瀏覽器驅(qū)動(dòng)的管理與使用方式。
11、lets-plot:用于統(tǒng)計(jì)數(shù)據(jù)的開(kāi)源繪圖庫(kù)[26] (英)
JetBrains 開(kāi)源的一個(gè)繪圖庫(kù),可創(chuàng)建美觀、交互式的統(tǒng)計(jì)圖表和數(shù)據(jù)可視化。為 Python 和 Kotlin 開(kāi)發(fā)者提供類(lèi)似 ggplot2 的繪圖 API。(star 1.1K)
12、pdfarranger:在圖形界面合并或拆分 PDF 文檔,支持旋轉(zhuǎn)、裁剪和重排[27] (英)
一個(gè)小型 python-gtk 程序,通過(guò)直觀的方式編輯 PDF 文檔。它的后端基于 pikepdf[28] ,這是一個(gè)用于讀寫(xiě) PDF 文件的庫(kù)。(star 2.3K)
pdfarranger的界面
??討論&問(wèn)題
1、關(guān)于 PEP-703 的指導(dǎo)委員會(huì)通知(使 CPython 的 GIL 成為可選)[29] (英)
在第 11 期周刊中,我們分享過(guò)“如果 PEP-703 被采納,Meta 將投入人力支持”,現(xiàn)在又有進(jìn)展啦,指導(dǎo)委員會(huì)打算接受 PEP-703 了!這篇帖子列出幾個(gè)基本原則與三個(gè)階段的開(kāi)發(fā)計(jì)劃。向后兼容性是重中之重,這不會(huì)是 Python 4。
參考資料
[1]Jupyter Notebook 7 隆重發(fā)布: https://blog.jupyter.org/announcing-jupyter-notebook-7-8d6d66126dcf
[2]Python 中的弱引用與基礎(chǔ)類(lèi)型支持情況探究: https://juejin.cn/post/7258881840823615544
[3]分布式鎖的介紹與 Python 實(shí)現(xiàn): http://so1n.me/2023/07/23/distributed_lock_lntroduction_and_lmplementation/
[4]釋放 PyScript 的力量:在 HTML 中運(yùn)行 Python 代碼: https://scofield.hashnode.dev/unlocking-the-power-of-pyscript-a-guide-to-running-python-code-in-your-html
[5]通過(guò)并發(fā)實(shí)現(xiàn)更快的文件 I/O: https://superfastpython.com/faster-file-io-with-concurrency/
[6]如何編寫(xiě)完美干凈的 Python 代碼?: https://dev.to/atkumar/how-to-write-impeccably-clean-code-that-will-save-your-sanity-4np9
[7]Python 日志記錄:對(duì)比最流行的 6 個(gè)庫(kù): https://betterstack.com/community/guides/logging/best-python-logging-libraries/
[8]使用 cProfile 分析模塊級(jí)代碼: https://adamj.eu/tech/2023/07/23/python-profile-section-cprofile/
[9]掌握 Python 函數(shù)式編程: https://www.codium.ai/blog/mastering-functional-programming-in-python/
[10]Python 3.12 預(yù)覽版:更直觀和一致的 f-string: https://realpython.com/python312-f-strings/
[11]使用 AsyncMixin 創(chuàng)建可等待的構(gòu)造函數(shù): https://dev.to/akarshan/asynchronous-python-magic-how-to-create-awaitable-constructors-with-asyncmixin-18j5
[12]在 Python 中查找并修復(fù)不安全的直接對(duì)象引用: https://snyk.io/blog/insecure-direct-object-references-python/
[13]使用異步 Python 克服性能瓶頸:深入研究 CPU 密集型代碼: https://medium.com/@DorIndivo/overcoming-performance-bottlenecks-with-async-python-a-deep-dive-into-cpu-bound-code-b604a400255a
[14]PEP-720 交叉編譯 Python 包: https://peps.python.org/pep-0720/
[15]PEP-722 單文件腳本的依賴(lài)關(guān)系規(guī)范: https://pep-previews--3210.org.readthedocs.build/pep-0722/
[16]Resume-Matcher:比較簡(jiǎn)歷與職位描述,按照打分排名: https://github.com/srbhr/Resume-Matcher
[17]awesome-python-htmx:Python 中使用 htmx 作 Web 開(kāi)發(fā)的精選內(nèi)容: https://github.com/PyHAT-stack/awesome-python-htmx
[18]CodeGeeX2: 更強(qiáng)大的多語(yǔ)言代碼生成模型: https://github.com/THUDM/CodeGeeX2
[19]Chinese-Llama-2-7b: 第一個(gè)能下載運(yùn)行的中文 LLaMA2 模型: https://github.com/LinkSoul-AI/Chinese-Llama-2-7b
[20]docker-llama2-chat: LLaMA2 (official / 中文版 / INT4 / llama2.cpp): https://github.com/soulteary/docker-llama2-chat
[21]taipy:將數(shù)據(jù)和 AI 算法轉(zhuǎn)變?yōu)橥暾?Web 應(yīng)用: https://github.com/Avaiga/taipy
[22]pyrasite:將代碼注入正在運(yùn)行的 Python 進(jìn)程: https://github.com/lmacken/pyrasite
[23]python-manhole:調(diào)試運(yùn)行中的 Python 程序: https://github.com/ionelmc/python-manhole
[24]vscode-python:使用 VScode 和 Docker 設(shè)置 Python 開(kāi)發(fā)環(huán)境: https://github.com/RamiKrispin/vscode-python
[25]webdriver_manager:Python 的 Webdriver 管理器: https://github.com/SergeyPirogov/webdriver_manager
[26]lets-plot:用于統(tǒng)計(jì)數(shù)據(jù)的開(kāi)源繪圖庫(kù): https://github.com/JetBrains/lets-plot
[27]pdfarranger:在圖形界面合并或拆分 PDF 文檔,支持旋轉(zhuǎn)、裁剪和重排: https://github.com/pdfarranger/pdfarranger
[28]pikepdf: https://github.com/pikepdf/pikepdf
[29]關(guān)于 PEP-703 的指導(dǎo)委員會(huì)通知(使 CPython 的 GIL 成為可選): https://discuss.python.org/t/a-steering-council-notice-about-pep-703-making-the-global-interpreter-lock-optional-in-cpython/30474?s=35
[30]贊賞: https://img.pythoncat.top/wechat_code.png
[31]買(mǎi)杯咖啡: https://www.buymeacoffee.com/pythoncat
[32]微信: https://img.pythoncat.top/python_cat.jpg
[33]博客: https://pythoncat.top
[34]郵件: https://pythoncat.substack.com
[35]Github: https://github.com/chinesehuazhou/python-weekly
[36]Telegram: https://t.me/pythontrendingweekly
[37]Twitter: https://twitter.com/chinesehuazhou