Python猫

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)

参考资料
[1] 

🦄文章&教程: 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

Image
Image