|
1 | | ---- |
2 | | -title: 'Python 潮流周刊#78:async/await 是糟糕的设计' |
3 | | -pubDate: 2024-11-23 |
4 | | ---- |
5 | | - |
6 | | -本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进 Python 技术,并增长职业和副业的收入。 |
7 | | - |
8 | | -分享了 12 篇文章,12 个开源项目,1 则音视频,全文 2200 字。 |
9 | | - |
10 | | -以下是本期摘要: |
11 | | - |
12 | | -**[🦄文章&教程](https://xiaobot.net/p/python_weekly)** |
13 | | - |
14 | | - |
15 | | -① 游乐场智慧:线程击败 Async/Await |
16 | | - |
17 | | -② Python 真的很慢吗? |
18 | | - |
19 | | -③ Django Async:准备好用于生产环境了吗? |
20 | | - |
21 | | -④ 为什么持久执行应该是轻量级的? |
22 | | - |
23 | | -⑤ Python 中管道模式——通过重载运算符实现 |
24 | | - |
25 | | -⑥ FireDucks:Pandas 但速度快 100 倍 |
26 | | - |
27 | | -⑦ 任何 Python 程序都用 24 个字符装下 |
28 | | - |
29 | | -⑧ PEP-765:不允许在 finally 块用 return/break/continue 作退出 |
30 | | - |
31 | | -⑨ CPython 的垃圾回收器及其对程序性能的影响 |
32 | | - |
33 | | -⑩ 扩展 Django 项目的实用指南 |
34 | | - |
35 | | -⑪ SQL、同态和约束满足问题 |
36 | | - |
37 | | -⑫ 使用 GDB 和 DDD,愉快地调试 |
38 | | - |
39 | | -**[🐿️项目&资源](https://xiaobot.net/p/python_weekly)** |
40 | | - |
41 | | - |
42 | | -① pyTermTk:Python 终端工具包 |
43 | | - |
44 | | -② terminal-tree:终端中的文件系统导航器 |
45 | | - |
46 | | -③ chdb:进程内 OLAP SQL 引擎 |
47 | | - |
48 | | -④ open-notebook:谷歌 Notebook LM 的开源替代 |
49 | | - |
50 | | -⑤ garak:LLM 漏洞扫描 |
51 | | - |
52 | | -⑥ EasyAnimate:高分辨率和端到端的长视频生成 |
53 | | - |
54 | | -⑦ ASCII-generator:ASCII 生成器 |
55 | | - |
56 | | -⑧ leopards:查询 Python 列表 |
57 | | - |
58 | | -⑨ 分布式系统第 4 版-电子书 |
59 | | - |
60 | | -⑩ ebook2audiobook:生成带章节的电子书有声读物 |
61 | | - |
62 | | -⑪ pensieve:完全由你掌控数据的「被动记录」项目 |
63 | | - |
64 | | -⑫ yami:有简单 UI 的开源音乐播放器 |
65 | | - |
66 | | -**[🐢播客&视频](https://xiaobot.net/p/python_weekly)** |
67 | | - |
68 | | - |
69 | | -① PyData Tel Aviv 2024 视频列表(24个) |
70 | | - |
71 | | - |
72 | | - |
73 | | -周刊实行付费订阅制,年费 128 元,平均每天不到 4 毛钱,但绝对是一笔有眼光的投资。花钱学习知识,花钱提升自己,欢迎订阅这个你绝对不会后悔的专栏:https://xiaobot.net/p/python_weekly |
74 | | - |
75 | | -订阅后,可免费查看 第 78 期周刊的全文:https://www.xiaobot.net/post/ff53f85c-3b96-47fe-b353-592ae532ec75 |
76 | | - |
77 | | -Python 潮流周刊第 2 季完结了,分享几项总结:https://pythoncat.top/posts/2024-07-14-iweekly |
78 | | - |
79 | | -周刊前30期的免费合集,含精美电子书(EPUB/PDF):https://pythoncat.top/posts/2023-12-11-weekly |
80 | | - |
81 | | -万字浓缩版,Python 潮流周刊第 1 季的 800 个链接!:https://xiaobot.net/post/78c3d645-86fa-4bd8-8eac-46fb192a339e |
82 | | - |
83 | | -**微信关注 Python猫**:[https://img.pythoncat.top/python_cat.jpg](https://img.pythoncat.top/python_cat.jpg) |
| 1 | +--- |
| 2 | +title: 'Python 潮流周刊#78:async/await 是糟糕的设计' |
| 3 | +pubDate: 2024-11-23 |
| 4 | +--- |
| 5 | + |
| 6 | +你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。周刊开源在 [Github](https://github.com/chinesehuazhou/python-weekly) 上,喜欢请给颗小星星支持下~ |
| 7 | + |
| 8 | +本期分享了 12 篇文章,12 个开源项目,1 则音视频,全文 2200 字。 |
| 9 | + |
| 10 | +## [🦄文章&教程](https://xiaobot.net/p/python_weekly) |
| 11 | + |
| 12 | +1、[游乐场智慧:线程击败 Async/Await](https://lucumr.pocoo.org/2024/11/18/threads-beat-async-await/) |
| 13 | + |
| 14 | +作者确信 async/await 对大多数语言来说是一种糟糕的抽象,更好的方式是线程。虽然它让我们从回调地狱中解脱,但也带来了新的问题,如彩色函数、背压挑战等,阻碍我们追求直接直观的并发。作者建议新语言设计应采用类似 Java 的 Loom 项目的虚拟线程模型。(附:文中一再提及的一篇旧文 [I'm not feeling the async pressure](https://pythoncat.top/posts/2020-01-11-flask)) |
| 15 | + |
| 16 | +2、[Python 真的很慢吗?](https://blog.miguelgrinberg.com/post/is-python-really-that-slow) |
| 17 | + |
| 18 | +文章比较了 Python 与 Node.js 和 Rust 的性能,例子是计算斐波那契数列和冒泡排序。结果发现 Python 3.11 相比上一版本有较大提升;PyPy 与 Node.js 速度十分相近。作者为 Python 近几个版本的性能提升感到满意,对 PyPy 的性能感到惊讶。 |
| 19 | + |
| 20 | +3、[Django Async:准备好用于生产环境了吗?](https://jonathanadly.com/is-async-django-ready-for-prime-time) |
| 21 | + |
| 22 | +异步 Django 使用时有什么注意事项?文章介绍了全异步涉及的 ASGI Web 服务器、异步视图、异步 ORM、异步 API 调用、异步中间件等使用,结论认为 异步 Django 已经可用于生产环境。 |
| 23 | + |
| 24 | +4、[为什么持久执行应该是轻量级的?](https://www.dbos.dev/blog/what-is-lightweight-durable-execution) |
| 25 | + |
| 26 | +持久执行能够在系统崩溃、重启或中断后恢复到之前的状态或位置。文章介绍了 DBOS 的轻量级实现,使用 Postgres 来存储工作流状态和步骤输出,支持持久化睡眠、消息传递和队列等功能,简化了开发、部署和维护。 |
| 27 | + |
| 28 | +5、[Python 中管道模式——通过重载运算符实现](https://un4gt.github.io/python/python_some_tips/python_pipeline.html) |
| 29 | + |
| 30 | +上期周刊分享了一篇实现管道模式的文章,用的方法是 reduce 和 lambda,而这篇文章则通过重载运算符来实现,调用时更贴近 Linux 中的管道操作符。(分享自@un4gt) |
| 31 | + |
| 32 | +6、[FireDucks:Pandas 但速度快 100 倍](https://hwisnu.bearblog.dev/fireducks-pandas-but-100x-faster/) |
| 33 | + |
| 34 | +文章分享了好几组性能测试的数据,FireDucks 平均比 Pandas 快 50 倍,比 Polars 快,甚至击败了 DuckDB!FireDucks 与现有 Pandas 100% 兼容,性能更快,看起来不错。 |
| 35 | + |
| 36 | +7、[任何 Python 程序都用 24 个字符装下](https://purplesyringa.moe/blog/any-python-program-fits-in-24-characters/) |
| 37 | + |
| 38 | +不算空白字符,任何 Python 程序都能编码成仅 24 个字符的长度?文章将 Unicode 空白字符的码点映射到特定的字符上,实现代码的极致压缩。 |
| 39 | + |
| 40 | +8、[PEP-765:不允许在 finally 块用 return/break/continue 作退出](https://peps.python.org/pep-0765/) |
| 41 | + |
| 42 | +一则新的 PEP 草案,建议限制在 finally 代码块中使用 return/break/continue 作退出,主要原因是它会导致异常被吞噬,以及 finally 中 return 的值会替代 try 子句的 return 值。 |
| 43 | + |
| 44 | +9、[CPython 的垃圾回收器及其对程序性能的影响](https://blog.codingconfessions.com/p/connecting-cpythons-gc-internals) |
| 45 | + |
| 46 | +详细分析了 CPython 中的内存管理机制,主要关注循环垃圾回收器 (GC),介绍了它的运行方式和运行时机,并解释了它对程序性能的影响。还介绍了优化内存使用和减少 GC 影响的技巧,如调整 GC 阈值、使用弱引用和优化数据结构。 |
| 47 | + |
| 48 | +10、[扩展 Django 项目的实用指南](https://slimsaas.com/blog/django-scaling-performance/) |
| 49 | + |
| 50 | +作者建议随着系统增长而逐步消除瓶颈,介绍了常见瓶颈的优化方法,包括查询过程优化、数据库索引、查询集优化、视图级缓存、模板片段缓存、底层缓存 API、异步视图和后台任务、负载均衡,等等。 |
| 51 | + |
| 52 | +11、[SQL、同态和约束满足问题](https://www.philipzucker.com/sql_graph_csp/) |
| 53 | + |
| 54 | +SQL 不仅可作数据库查询,还可解决看似棘手的问题,如数独和编程挑战。文章展示了 SQL 在解决图同态和约束满足问题的强大能力,解决这类问题比纯 Python 更快。 |
| 55 | + |
| 56 | +12、[使用 GDB 和 DDD,愉快地调试](https://begriffs.com/posts/2022-07-17-debugging-gdb-ddd.html) |
| 57 | + |
| 58 | +GDB 是一个古老的 Linux/BSD 系统调试器,文章介绍了如何定制 GDB 界面、配置 DDD、GDB 的调试技巧,以及使用 GDB 的 Python API 来创建辅助函数和美化打印等内容。 |
| 59 | + |
| 60 | +## [🐿️项目&资源](https://xiaobot.net/p/python_weekly) |
| 61 | + |
| 62 | +1、[pyTermTk:Python 终端工具包](https://github.com/ceccopierangiolieugenio/pyTermTk) |
| 63 | + |
| 64 | +提供给 TUI 开发使用的基本小组件(按钮、标签、复选框等)、专用小组件(Windows, Frames, Tables等)、真彩色支持、全/半/零大小的 Unicode 字符。 |
| 65 | + |
| 66 | +2、[terminal-tree:终端中的文件系统导航器](https://github.com/willmcgugan/terminal-tree) |
| 67 | + |
| 68 | +在终端中通过键盘或鼠标来导航目录树,支持文件预览、路径补全和校验、路径组件。 |
| 69 | + |
| 70 | +3、[chdb:进程内 OLAP SQL 引擎](https://github.com/chdb-io/chdb) |
| 71 | + |
| 72 | +由 ClickHouse 提供支持的进程内 SQL OLAP 引擎,输入和输出支持 Parquet、CSV、JSON、Arrow、ORC 和 60+ 种格式,支持 Python DB API 2.0。(star 2.2K) |
| 73 | + |
| 74 | + |
| 75 | + |
| 76 | +4、[open-notebook:谷歌 Notebook LM 的开源替代](https://github.com/lfnovo/open-notebook) |
| 77 | + |
| 78 | +支持多笔记本、支持多种模型、支持笔记转播客、广泛的内容集成方式、AI 驱动的笔记、集成搜索引擎、精细的上下文管理。 |
| 79 | + |
| 80 | +5、[garak:LLM 漏洞扫描](https://github.com/NVIDIA/garak) |
| 81 | + |
| 82 | +检查 LLM 的漏洞,包括探测幻觉、数据泄露、提示词注入、错误信息、有害信息、越狱等问题。(star 2.7K) |
| 83 | + |
| 84 | +6、[EasyAnimate:高分辨率和端到端的长视频生成](https://github.com/aigc-apps/EasyAnimate) |
| 85 | + |
| 86 | +一个基于 Transformer 架构的管道,旨在生成 AI 图像和视频,以及用于训练 Diffusion Transformer 的基线模型和 Lora 模型。(star 1.5K) |
| 87 | + |
| 88 | +7、[ASCII-generator:ASCII 生成器](https://github.com/vietnh1009/ASCII-generator) |
| 89 | + |
| 90 | +知名 UP 主何同学将基于此开源项目改造的程序称为“专门写了一个软件”……它支持 ASCII 字符转制,包括图像到文本、图像到图像、视频到视频。(star 6K) |
| 91 | + |
| 92 | + |
| 93 | + |
| 94 | +8、[leopards:查询 Python 列表](https://github.com/mkalioby/leopards) |
| 95 | + |
| 96 | +一种查询字典列表或对象列表的方法,就像在 DBMS 中过滤一样。可查询与 OR、AND 或 NOT 匹配的字典/对象。速度比 Pandas 快。 |
| 97 | + |
| 98 | +9、[分布式系统第 4 版-电子书](https://www.distributed-systems.net/index.php/books/ds4/) |
| 99 | + |
| 100 | +Distributed Systems 的第 4 版,包含各种小的更正项,所有 Python 代码已更新为 Python 3. |
| 101 | + |
| 102 | +10、[ebook2audiobook:生成带章节的电子书有声读物](https://github.com/DrewThomasson/ebook2audiobook) |
| 103 | + |
| 104 | +用 Calibre 和 Coqui XTTS 将电子书转换为带章节和元数据的有声读物,支持可选的语音克隆和多种语言!(star 1K) |
| 105 | + |
| 106 | +11、[pensieve:完全由你掌控数据的「被动记录」项目](https://github.com/arkohut/pensieve) |
| 107 | + |
| 108 | +一个专注于隐私的被动记录项目,可以自动记录屏幕内容,构建智能索引,并提供便捷的 Web 界面来检索历史记录。数据存储在本地,完全本地化运行。 |
| 109 | + |
| 110 | +12、[yami:有简单 UI 的开源音乐播放器](https://github.com/DevER-M/yami) |
| 111 | + |
| 112 | +用 Python 开发的轻量级音乐播放器,简约跨平台,支持本地文件及用 spotdl 在线下载。 |
| 113 | + |
| 114 | + |
| 115 | + |
| 116 | +## [🐢播客&视频](https://xiaobot.net/p/python_weekly) |
| 117 | + |
| 118 | +1、[PyData Tel Aviv 2024 视频列表(24个)](https://www.youtube.com/playlist?list=PLGVZCDnMOq0pRsGPxDvLZfuufNgqREc0a) |
| 119 | + |
| 120 | +PyData Tel Aviv 是一个专注于 PyData 项目的会议和社区活动,聚焦数据分析、数据科学和机器学习领域。 |
| 121 | + |
| 122 | +## [🐧 往年回顾](https://xiaobot.net/p/python_weekly) |
| 123 | + |
| 124 | +[Python 潮流周刊#28:两种线程池、四种优化程序的方法](https://pythoncat.top/posts/2023-11-25-weekly)(2023.11.25) |
| 125 | + |
| 126 | +## [🐱欢迎订阅](https://xiaobot.net/p/python_weekly) |
| 127 | + |
| 128 | +技术周刊是聪明人在信息过载时代中筛选优质知识的聪明手段。这是一个专为国内 Python 开发者量身打造的资讯平台,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等丰富内容。[立即订阅](https://xiaobot.net/p/python_weekly),每周将收到一篇文章推送,每周进步一点点。 |
| 129 | + |
| 130 | +欢迎留言,说说你最喜欢本期的哪一则分享?大家反馈得越多,我今后分享的也会越多! |
| 131 | + |
| 132 | +欢迎将[本专栏](https://xiaobot.net/p/python_weekly)分享给同样爱学习的同学,当有人通过你分享的海报或者链接,购买了专栏,那么你将获得 **50%** 的返利。 |
| 133 | + |
| 134 | +[Python 潮流周刊第 2 季完结了,分享几项总结](https://pythoncat.top/posts/2024-07-14-iweekly) |
| 135 | + |
| 136 | +[Python 潮流周刊第一季精华合集(1~30)](https://pythoncat.top/posts/2023-12-11-weekly) |
| 137 | + |
| 138 | +[万字浓缩版,Python 潮流周刊第 1 季的 800 个链接!](https://xiaobot.net/post/78c3d645-86fa-4bd8-8eac-46fb192a339e) |
0 commit comments