Python 潮流周刊#57:Python 该采用日历版本吗?
这里分享的是 Python 潮流周刊第 57 期,原文发布于 2024-06-22。我们的付费专栏内容在发布一年后会免费开源,不少内容依然值得回看,愿大家读有所获。点击文末“阅读原文”,体验更佳。
温馨提示:在微信关注 Python猫,发送“优惠券”,即可领取 9 折优惠券,订阅专栏可享 15 元优惠。
本期分享了 12 篇文章,12 个开源项目。
🦄文章&教程[1]
1、NumPy 2.0:一个重要的里程碑[2]
距离 Numpy 1.0 发布已 18 年,2.0 版本是一个重要的里程碑。它引入了一些非兼容性的修改,重要的升级:清理和简化了 Python API、更新了标量提升规则、强大的 DType API 和新的字符串 dtype、增强 Windows 兼容性、支持 Python 数组 API 标准。(附:NumPy 2.0.0 Release Notes[3])
2、2024 年 Python 语言峰会:Python 该采用日历版本吗?[4]
我们去年将 Python 语言峰会的所有议题出了一期加更[5],今年只挑三则,更多议题请查看官方博客[6]。这篇议题讨论的是将 Python 当前的语义版本控制(SemVer)改为日历版本控制(CalVer),即在版本号中加上年份,例如 3.26 表示在 2026 年发布的版本。备选的格式有以年份为主的“26.0.0”,以及年加月的“26.10.0”。
3、2024 年 Python 语言峰会:我们应该让 pdb 变得更好吗?[7]
今年 Python 语言峰会的议题之一,出自国内最近成为核心开发者的@高天。讨论了可以给 pdb 添加的一些新功能,包括显示断点附加代码、终端中的语法高亮、支持自定义、处理更多场景(线程、异步、字节码、远程调试);也提出将 pdb 底层切换成sys.monitoring 以提升性能,但这会引入向后兼容问题。
4、2024 年 Python 语言峰会:手机端上的 Python[8]
今年 Python 语言峰会的议题之一,讨论 Python 在 iOS 和 Android 等移动端上的现状和发展方向。Python 3.13 对 Android 和 iOS 上的 Python 提供 Tier 3 级支持。BeeWare 团队正推动将 Python 开源包生态引入移动端,在 CPython 测试套件和构建工具上也会加大投入。
5、Python 项目管理入门[9]
探讨了如何管理 Python 项目的环境和依赖项,以及如何有效地构建项目,内容较长。
6、在 Python 中连接字符串:一个“啊哈”时刻[10]
作者使用 Python 已长达 17 年,到底是什么内容让她发出“啊哈”的感叹?作者研究str.join() 时发现一个奇怪的问题:当使用生成器作为str.join()的入参时,性能比使用列表推导式慢约 16%。原因是 join() 会先将生成器转换为列表,然后拼接,因此导致额外的开销。PyPy 则不会做这种处理,它用生成器做入参时比列表推导式快约 5 倍。
7、掌握上下文管理器,简化 Python 资源管理[11]
在使用资源时,经常要做重复性任务,如设置和关闭进程、打开和关闭资源。这些场景最适合用上下文管理器,文章介绍什么是上下文管理器、详细的使用指南、典型的使用场景和常见问题。
8、如何从Pandas 迁移到 Polars[12]
Rust 开发的高性能 Polars 正在蚕食 Pandas 的市场份额。从 Panas 迁移到 Polars 是不是很麻烦?会不会导致数据处理流程和工具不兼容?作者演示了无缝切换的过程。
9、向 CPython 添加 JIT 编译器[13]
这是对 PyCon 2024 一场演讲的文字报道,演讲者是给 Python 3.13 引入 JIT 编译器的 Brandt Bucher。介绍了 Python 3.13 前做的一系列改进,为什么要在 3.13 引入 JIT 编译器,团队当前所做的一些工作以及核心的实现细节问题。
10、Debug 日志:CPython GH-120437[14]
文章分享了作者调试 Python 3.13 Beta 版本一个 Bug 的经历,涉及的模块是最新引入的 JIT/Tier 2 优化器。
11、使用 Rust 将 Python AST 的解析速度提高 20 倍[15]
作者用第 53 期分享过的tach 库分析 3000 个文件,耗时近 10 秒。文章分析了耗时多的原因,然后用 Rust 重写了 C 代码,结果提速近 20 倍。使用了性能分析工具有 py-spy、speedscope 和 Valgrind。
12、Ruff:Rust 开发的 Python linter-formatter 的内部原理[16]
这是一个系列文章的第一篇,试图解析 Ruff 库的内部实现原理,包括 Rust 和 Python 如何相互操作、Ruff 第一个版本是如何工作的、现在版本有哪些组成部分等内容。
🐿️项目&资源[17]
1、pdf-to-podcast:将任何 PDF 转换为播客节目[18]
利用 OpenAI 的文本转语音模型和 Google Gemini 来处理 PDF 文件,生成自然对话类播客,并输出为 MP3 文件。
2、prettypretty:漂亮的终端颜色库[19]
帮助用 Python 和 Rust 开发出漂亮的终端用户界面。包含一个强大而通用的颜色库。
3、django-render:使用 Django 和 React 构建用户友好的应用[20]
Web 全栈项目,构建完全客户端渲染的 React 应用,后端基于 Django,支持表单、会话验证和消息。支持 Storybook 和 Vite 热模块重载。
4、holmesgpt:GPT 支持的 DevOps 助手[21]
从 DevOps 到 AIOps,查看告警并获取缺失的上下文数据,更快地找到根本原因。
5、labelme:用 Python 作图像多边形标注[22]
一个用 Python 开发的图形图像标注工具,用 Qt 作图形界面。支持分类和清理图像标注,也支持视频标注,支持 GUI 定制。(star 12.7K)
6、aurora:Python 实现的快速、可扩展的静态站点生成器[23]
简单的静态站点/博客生成器,渲染 4000 个 Markdown 文件大约花 1 秒钟。
7、httpstat:使 CURL 统计变得简单[24]
以一种美观和清晰的方式将 curl(1) 统计数据可视化。单个 Python 文件,无外部依赖。(star 6K)
8、writer-framework:用于创建 AI 应用的全栈框架[25]
提供可视化编辑器,支持拖放,无需写代码即可构建 UI;用 Python 编写后端代码,界面与业务逻辑间实现关注点分离。(star 1.2K)
9、surya:OCR、布局分析、顺序读取、90+ 种语言的行检测[26]
一个文档 OCR 工具包,支持 90+ 语言,行级文本检测,支持布局分析(表格、图像、页眉等)。(star 8.8K)
10、MiniCPM-Llama3-V 2.5:手机上媲美 GPT-4V 的多模态 LLM[27]
MiniCPM-V 系列的最新版本模型,共 8B 参数量,OpenCompass 得分超过 GPT-4V-1106、Gemini Pro、Claude 3、Qwen-VL-Max 等主流商用闭源多模态大模型。(star 7.5K)
11、pyod:用于异常值检测 Python 库[28]
用于检测多变量数据中的异常,支持 50 多种检测算法,下载量超过 1700 万次。利用 numba 和 joblib 进行 JIT 编译和并行处理,拥有超高性能。(star 8.1K)
12、warp:用于高性能 GPU 仿真和图形的 Python 框架[29]
NVIDIA 推出的框架,可将普通 Python 函数用 JIT 编译成在 CPU 或 GPU 上运行的高效的内核代码。专为空间计算而设计,可轻松编写用于物理模拟、感知、机器人和几何处理的程序。(star 3.4K)
🐧 往年回顾[30]
Python潮流周刊#7:我讨厌用 asyncio[31](2023.06.17)
🦄文章&教程: https://xiaobot.net/p/python_weekly
[2]NumPy 2.0:一个重要的里程碑: https://blog.scientific-python.org/numpy/numpy2/
[3]NumPy 2.0.0 Release Notes: https://github.com/numpy/numpy/releases/tag/v2.0.0
[4]2024 年 Python 语言峰会:Python 该采用日历版本吗?: https://pyfound.blogspot.com/2024/06/python-language-summit-2024-should-python-adopt-calver.html
[5]一期加更: https://pythoncat.top/posts/2023-05-31-weekly4
[6]官方博客: https://pyfound.blogspot.com/2024/06/python-language-summit-2024.html
[7]2024 年 Python 语言峰会:我们应该让 pdb 变得更好吗?: https://pyfound.blogspot.com/2024/06/python-language-summit-2024-pyrepl-new-pdb.html
[8]2024 年 Python 语言峰会:手机端上的 Python: https://pyfound.blogspot.com/2024/06/python-language-summit-2024-python-on-mobile.html
[9]Python 项目管理入门: https://martynassubonis.substack.com/p/python-project-management-primer
[10]在 Python 中连接字符串:一个“啊哈”时刻: https://berglyd.net/blog/2024/06/joining-strings-in-python/
[11]掌握上下文管理器,简化 Python 资源管理: https://coderlegion.com/361/mastering-context-manager-simplifying-resource-management-python
[12]如何从Pandas 迁移到 Polars: https://blog.jetbrains.com/pycharm/2024/06/how-to-move-from-pandas-to-polars/
[13]向 CPython 添加 JIT 编译器: https://lwn.net/SubscriberLink/977855/5daef5af6b2d4c1b/
[14]Debug 日志:CPython GH-120437: https://www.manjusaka.blog/posts/2024/06/19/a-live-debug-gh120437/
[15]使用 Rust 将 Python AST 的解析速度提高 20 倍: https://www.gauge.sh/blog/parsing-python-asts-20x-faster-with-rust
[16]Ruff:Rust 开发的 Python linter-formatter 的内部原理: https://compileralchemy.substack.com/p/ruff-internals-of-a-rust-backed-python
[17]🐿️项目&资源: https://xiaobot.net/p/python_weekly
[18]pdf-to-podcast:将任何 PDF 转换为播客节目: https://github.com/knowsuchagency/pdf-to-podcast
[19]prettypretty:漂亮的终端颜色库: https://github.com/apparebit/prettypretty
[20]django-render:使用 Django 和 React 构建用户友好的应用: https://github.com/kaedroho/django-render
[21]holmesgpt:GPT 支持的 DevOps 助手: https://github.com/robusta-dev/holmesgpt/
[22]labelme:用 Python 作图像多边形标注: https://github.com/labelmeai/labelme
[23]aurora:Python 实现的快速、可扩展的静态站点生成器: https://github.com/capjamesg/aurora
[24]httpstat:使 CURL 统计变得简单: https://github.com/reorx/httpstat
[25]writer-framework:用于创建 AI 应用的全栈框架: https://github.com/writer/writer-framework
[26]surya:OCR、布局分析、顺序读取、90+ 种语言的行检测: https://github.com/VikParuchuri/surya
[27]MiniCPM-Llama3-V 2.5:手机上媲美 GPT-4V 的多模态 LLM: https://github.com/OpenBMB/MiniCPM-V
[28]pyod:用于异常值检测 Python 库: https://github.com/yzhao062/pyod
[29]warp:用于高性能 GPU 仿真和图形的 Python 框架: https://github.com/NVIDIA/warp
[30]🐧 往年回顾: https://xiaobot.net/p/python_weekly
[31]Python潮流周刊#7:我讨厌用 asyncio: https://pythoncat.top/posts/2023-06-17-weekly7