您的位置:首頁 >熱點(diǎn)資訊 >

Python潮流周刊#7:我討厭用 asyncio

2023-06-23 13:44:20 來源:程序員客棧

△點(diǎn)擊上方“Python貓”關(guān)注 ,回復(fù)“1”領(lǐng)取電子書


【資料圖】

你好,我是貓哥。這里記錄每周值得分享的 Python 及通用技術(shù)內(nèi)容,部分為英文,已在小標(biāo)題注明。(標(biāo)題取自其中一則分享,不代表全部內(nèi)容都是該主題,特此聲明。)

由于公眾號(hào)不支持外鏈,文中大量鏈接無法點(diǎn)擊。可直達(dá)我的博客閱讀(復(fù)制鏈接到瀏覽器中打開):https://pythoncat.top/posts/2023-06-17-weekly7

文章&教程

1、AsyncIO (英)

文章的作者討厭 asyncio 庫,認(rèn)為使用 async和 await的設(shè)計(jì)十分糟糕,它與大多數(shù)庫不兼容,也不滿足“Python之禪”的一些標(biāo)準(zhǔn)。作者的推薦方案是 gevent,提及了它的幾點(diǎn)好處。另外,作者還推薦了兩篇相關(guān)的文章:Flask 作者 Armin Ronacher 的《I don"t understand Python"s Asyncio》,SQLAlchemy 作者 Mike Bayer 的《Asynchronous Python and Databases》

2、gevent 到底是什么?(英)

gevent 是一個(gè)基于協(xié)程的協(xié)作式多任務(wù) Python 框架,使用猴子補(bǔ)丁來協(xié)調(diào)所有代碼。這篇文章是一個(gè)系列的第一篇,介紹了 gevent 的基本實(shí)現(xiàn)原理,第二篇是《Gevent Correctness》,第三篇是《Gevent Performance》

3、ReactPy 的入門教程 (英)

上期周刊推薦過的 ReactPy 最近很火,它支持用 Python 寫 React 風(fēng)格的前端應(yīng)用。這里是一篇簡單的入門教程。另外,建議感興趣的同學(xué)去看官方文檔。

reactpy 的 hello world 程序

4、Python 業(yè)務(wù)框架循環(huán)依賴和全局上下文的一些思考

如何簡單而優(yōu)雅地解決 Python 的循環(huán)依賴問題呢?作者考察了主流 API 框架(Django、Flask、FastAPI)的上下文管理方案,然后介紹了自己框架采用的方案:借鑒了 Ray 社區(qū)中對(duì)象所有權(quán)的概念,在一個(gè)協(xié)程上實(shí)現(xiàn)一個(gè)簡易的所有權(quán)字典。

5、Python 函數(shù)調(diào)用的實(shí)際依賴關(guān)系跟蹤 (英)

跟蹤 Python 函數(shù)調(diào)用時(shí)訪問的代碼和數(shù)據(jù)是一種很有用的操作,比如繪制依賴圖、調(diào)試和分析性能、緩存失效。這篇文章考察了一種可能的實(shí)現(xiàn)方式,包含了一個(gè)少于 100 行代碼的最小可行實(shí)現(xiàn)。作者是 MIT 的計(jì)算機(jī)科學(xué)博士。

6、Python 3.x從基礎(chǔ)到實(shí)戰(zhàn) - typing類型提示

這是一篇入門教程,通過簡短的示例,介紹了 Python Typing 模塊的基礎(chǔ)用法和進(jìn)階用法。

7、wxPython 入門教程 (英)

wxPython 是跨平臺(tái)的圖形用戶界面框架,基于 wxWidgets 庫開發(fā),在 1998 年發(fā)布。它最新發(fā)展到了 4.x 版本,這篇文章基于最新的特性作了詳細(xì)的入門介紹。

wxPython 的 hello world 程序

8、Python 裝飾器的用法指導(dǎo)

一篇很認(rèn)真的文章,介紹了裝飾器的基本概念和進(jìn)階用法。在示例部分介紹了 Django 的幾個(gè)很常用的裝飾器(@login_required、@permission_required、@csrf_exempt、@cache_page)。

9、在進(jìn)程間共享 Numpy 數(shù)組的 7 種方式 (英)

多進(jìn)程編程時(shí)最麻煩的事情之一就是共享數(shù)據(jù),這篇文章介紹了 7 種共享 Numpy 數(shù)組的方式:傳遞參數(shù)、使用全局變量、使用隊(duì)列 Queue、使用管道 Pipe、使用基于 ctypes 的 RawArray、使用 Python 3.8 的 SharedMemory、使用多進(jìn)程的管理器。這是一篇系統(tǒng)性的長文,里面還引用了作者的一些相關(guān)文章,十分推薦閱讀。

10、在 Python 中作時(shí)間序列分析的工具 (英)

時(shí)間序列數(shù)據(jù)(Time-Series Data)是指在不同時(shí)間點(diǎn)上收集的數(shù)據(jù),這篇文章介紹了在 Python 中分析時(shí)間序列數(shù)據(jù)的工具,包括常用的 NumPy、pandas 和 Matplotlib,以及 Tsfresh、Sktime、AutoTS、Prophet、Timescale 等。

11、如何快速處理缺失的數(shù)據(jù) (英)

在數(shù)據(jù)分析和機(jī)器學(xué)習(xí)領(lǐng)域,需要盡量確保數(shù)據(jù)集的完整性和準(zhǔn)確性,因此處理缺失值是必不可少的環(huán)節(jié)。文章先介紹了數(shù)據(jù)缺失的原因和模式(完全隨機(jī)丟失 、隨機(jī)丟失和不隨機(jī)丟失),然后介紹了處理缺失值的常用方法:刪除、填充、插補(bǔ)。

12、Cython 與 CPython:對(duì)比性能差異 (英)

這篇文章用 10 個(gè)不同的基準(zhǔn)作性能比較,涵蓋了多種場景及邊緣情況,包括斐波那契數(shù)列、斐波那契數(shù)列(迭代)、矩陣乘法、質(zhì)數(shù)生成、字符串拼接、計(jì)算均值、計(jì)算均值(未優(yōu)化)、算術(shù)運(yùn)算、文件操作、線性搜索、冒泡排序。猜猜最后的結(jié)論是什么呢?

13、使用 FastAPI 進(jìn)行流式處理 (英)

服務(wù)器推送事件 (Server-Sent Events) 是一種基于 HTTP 的單向通信協(xié)議,允許服務(wù)器向客戶端實(shí)時(shí)推送數(shù)據(jù)。這篇文章解釋了如何使用 FastAPI 實(shí)現(xiàn)流式處理 JSON 事件。文章出自“FastAPI Pro 系列”,另外兩篇文章關(guān)于如何使用動(dòng)態(tài)配置、如何加密保護(hù) API。

SSE 示意圖

14、20 道關(guān)于 FastAPI 中間件的面試題 (英)

中間件(middleware)是 FastAPI 中的一種機(jī)制,允許在 HTTP 請(qǐng)求和響應(yīng)到達(dá)路由處理程序之前攔截和修改它們。文章包含 20 個(gè)與中間件、身份驗(yàn)證和授權(quán)相關(guān)的面試題。

15、CPython 添加返回常量指令 (英)

上期周刊引發(fā)了“國內(nèi) Python 貢獻(xiàn)者數(shù)量”的話題,@yihong0618 在推特上留言分享了 @penguin-wwy 給 CPython 提交的這個(gè)貢獻(xiàn)。該作者發(fā)現(xiàn) LOAD_CONST + RETURN_VALUE 高頻出現(xiàn)在 pystats 文檔中,因此提交了一個(gè)新的 RETURN_CONST 指令,此項(xiàng)貢獻(xiàn)在 Python 3.12 基準(zhǔn)測試中獲得約 10% 的性能提升。

Python潮流周刊已免費(fèi)發(fā)布了 7 期,掃描下方二維碼,即可查看全部內(nèi)容:

?項(xiàng)目&資源

1、argcomplete:命令行自動(dòng)補(bǔ)全庫 (英)

在使用 Python 命令或者命令行工具時(shí),一個(gè)痛點(diǎn)是沒有補(bǔ)全。使用 argcomplete 后,按 tab 鍵就可以自動(dòng)補(bǔ)全。它需要與 argparse 模塊一起使用,目前支持 bash 和 zsh 兩種 shell。

2、Lawyer LLaMA:中文法律 LLaMA

這是一個(gè)系統(tǒng)性學(xué)習(xí)了中國的法律知識(shí)體系的大語言模型,能夠正確理解民法、刑法、行政法、訴訟法等常見領(lǐng)域的法律概念,可進(jìn)行基礎(chǔ)的法律咨詢,涵蓋婚姻、借貸、海商、刑事等。

3、CPM-Bee:百億參數(shù)的中英文雙語基座大模型

這是一個(gè)完全開源、允許商用的百億參數(shù)中英文基座模型,采用 Transformer 自回歸架構(gòu),在超萬億(trillion)高質(zhì)量語料上進(jìn)行預(yù)訓(xùn)練。在中文的 Zero-CLUE 評(píng)測基準(zhǔn)上,它大幅超越其他模型,位列中文大模型第一。

4、TigerBot:多語言多任務(wù) LLM

也是國內(nèi)團(tuán)隊(duì)開源的大語言模型,根據(jù) OpenAI InstructGPT 論文在公開 NLP 數(shù)據(jù)集上的自動(dòng)評(píng)測,TigerBot-7B 達(dá)到 OpenAI 同樣大小模型的綜合表現(xiàn)的 96%。

5、BingAI-Client:突破限制的 New Bing

New Bing 集成了 ChatGPT,但是在國內(nèi)使用的門檻有點(diǎn)高!這個(gè)項(xiàng)目的客戶端基于 Angular,服務(wù)端基于 FastAPI 和 EdgeGPT。在本地部署好后,運(yùn)行服務(wù)端程序即可開始使用客戶端。(另外推薦一個(gè)項(xiàng)目 go-proxy-bingai,是用 Vue3 和 Go 搭建的 New Bing 演示站點(diǎn),國內(nèi)可用,無需登錄即可暢聊)

6、tabby:可自托管的 AI 編碼助手 (英)

這是 GitHub Copilot 的開源/本地替代品,無需 DBMS 或云服務(wù),擁有 Web UI,支持消費(fèi)級(jí)的 GPU。

(微信上傳失敗了,請(qǐng)查看原文)

tabby的效果演示

7、pyboke:極簡博客生成器

一個(gè)功能極簡、代碼極簡、自帶四種主題、支持生成 RSS 的靜態(tài)博客生成器。項(xiàng)目基于 Python 3.10,主要使用的庫有 arrow、click、jinja2、mistune 等。

8、gpt-engineer (英)

這是一個(gè)基于 ChatGPT4 的 AI 工程師,你只用告訴它需求,然后它會(huì)問幾個(gè)問題,接著生成整個(gè)項(xiàng)目代碼。提供出來的演示視頻非常驚艷!

(微信上傳失敗了,請(qǐng)查看原文)

gpt-engineer的效果演示

9、audiocraft:音頻處理和生成庫 (英)

這是 FaceBook 開源的一個(gè) PyTorch 庫,有最先進(jìn)的 EnCodec 音頻壓縮器/分詞器,內(nèi)含文本到音樂模型 MusicGen,使用了 10K 高質(zhì)量音樂曲目的內(nèi)部數(shù)據(jù)集,以及 ShutterStock 和Pond5 的音樂數(shù)據(jù)。

10、PythonGUI 教程網(wǎng)站 (英)

Python 中有很多開發(fā) GUI 的庫,除了前文提到的 wxPython,還有 Tkinter、PyQt、PySide、Kivy 等等。這個(gè)網(wǎng)站上提供了很多 GUI 相關(guān)的學(xué)習(xí)資料。

11、CPython 實(shí)現(xiàn)原理

這是一本用 GitBook 制作的在線電子書,翻譯自微軟獨(dú)立研究員 Anthony Shaw 的《CPython Internals》。

播客&視頻

1、pybites:定期重構(gòu)的重要性 (英)

這期播客聊了關(guān)于重構(gòu)的相關(guān)話題。

2、三個(gè)看似一樣的列表,占用內(nèi)存空間竟然不一樣多?

有三個(gè)看起來完全一樣的列表:[0]*3、[0,0,0]、[0 for _ in range(3)],但是使用 sys.getsizeof() 計(jì)算的內(nèi)存卻完全不同。這是為什么呢?這期 B 站視頻通過分析字節(jié)碼和 CPython 解釋器源碼,非常硬核地分析出了根本原因,值得一看!

3、asyncio的理解與入門,搞不明白協(xié)程?看這個(gè)視頻就夠了

這里呼應(yīng)一下本期標(biāo)題及第一則內(nèi)容。asyncio 依然是最主流的異步編程庫,近幾年也在逐漸發(fā)展成熟,很有必要深入學(xué)習(xí)。這是一則 B 站視頻,適合用于入門與加深理解。

福利活動(dòng)

不定期的福利活動(dòng),本期贈(zèng)書 5 本《Excel 應(yīng)用大全》,開獎(jiǎng)時(shí)間 6 月 22 日(端午節(jié))。請(qǐng)給 Python貓公眾號(hào)發(fā)送數(shù)字“8007”,獲取抽獎(jiǎng)資格。

這本書由 Excel Home 團(tuán)隊(duì)策劃,由多位微軟 MVP 通力打造,全面系統(tǒng)地介紹了 Excel 365 & Excel 2021 的技術(shù)特點(diǎn)和應(yīng)用方法,配合大量典型實(shí)用的案例,既可以作為初學(xué)者的入門指南,也可作為中高級(jí)用戶的參考手冊(cè)。

關(guān)于周刊

Python 潮流周刊,由豌豆花下貓主理,精心篩選國內(nèi)外的 250+ 信息源,為你挑選最值得分享的文章、教程、開源項(xiàng)目、軟件工具、播客和視頻、熱門話題等內(nèi)容。愿景:幫助所有讀者精進(jìn) Python 技術(shù),并增長職業(yè)和副業(yè)的收入。

內(nèi)容創(chuàng)作要花費(fèi)大量的時(shí)間和精力,如果你覺得有幫助,請(qǐng)隨意贊賞、買杯咖啡或在愛發(fā)電進(jìn)行支持!如果你喜歡本周刊,請(qǐng)轉(zhuǎn)發(fā)分享給其他需要的同學(xué),讓更多人可以從中受益~

訂閱方式:Python貓 (可加群)| RSS | 郵件 | Github | Telegram | Twitter

如果你覺得本文有幫助請(qǐng)慷慨分享和點(diǎn)贊,感謝啦!

關(guān)鍵詞: