Python 潮流周刊#39:Rust 开发的性能超快的打包工具

💡 原文中文,约2500字,阅读约需6分钟。
📝

内容提要

本周刊分享了多篇Python和AI相关的文章和教程,包括Python打包工具uv、Python项目管理工具Rye、Rust开发的Python库、搜索引擎实现、计算CPU指令数、装饰器代码复用、Asyncio任务处理、字符串操作、Python版本变更、将Postgres作为队列使用、常用的Django包、Python元类的案例、处理大规模气象数据的编程挑战等。同时还推荐了几个Python项目和资源。

🔎

延伸解读

uv 与 Rye 的整合趋势

uv 是 Rust 开发的 Python 打包工具,速度比 pip 快 8-10 倍,也可作为虚拟环境管理器。Rye 是 Flask 作者的项目管理工具,已实现下载 Python、管理虚拟环境等功能。uv 团队已接管 Rye,未来将融合成一个工具。这意味着 Python 打包和项目管理工具可能走向统一,减少工具链碎片化。

Rust 在 Python 生态中的角色

文章指出 Rust 正逐步取代 C 语言成为 Python 的高性能后端支撑。Rust 相比 C 的优势使其成为开发 Python 库的热门选择。uv 和 Ruff 等知名工具均用 Rust 开发,这反映了 Python 生态对性能的追求,也提示开发者关注 Rust 与 Python 的结合。

Python 版本维护与升级

文章总结了 Python 版本间的主要变更点,并指出每个版本的终止维护时间,例如 Python 3.8 将在今年 10 月 EOL。了解这些信息有助于开发者规划升级,避免使用已停止维护的版本。pyupgrade 工具可以自动升级代码语法,简化迁移过程。

大规模数据处理的挑战

文章介绍了一个处理一万亿行气象数据的编程挑战:100,000 个文件,每个 1000 万行,总大小 2.5 TB,存储在 S3 上。作者给出了运行 8.5 分钟的实现及优化成本的方案。这展示了 Python 在大规模数据处理中的潜力,也提醒读者关注性能优化和成本控制。

❓

Q&A

uv 是什么?它比 pip 快多少?

uv 是 Ruff 团队用 Rust 开发的 Python 包解析与安装器,被设计为 pip 和 pip-tools 的直接替代品。在不使用缓存时,它比 pip 和 pip-tools 快 8-10 倍。

Rye 是什么?它和 uv 有什么关系?

Rye 是 Flask 作者发布的 Python 打包和项目管理工具,已实现下载 Python、管理虚拟环境、构建和发布包、linting 和格式化、依赖管理等功能。uv 团队已接管 Rye,将来会融合成一个工具。

为什么 Rust 在 Python 生态中越来越流行?

Rust 正在逐步取代 C 语言成为 Python 的高性能后端支撑。文章介绍了 Rust 相比 C 的优势,以及用 Rust 开发的一些知名 Python 库。

如何用 Python 实现一个简单的搜索引擎?

文章介绍了用 80 行 Python 实现搜索引擎,包括基于 RSS 的异步爬虫、倒排索引、搜索排名和基于 FastAPI 的 Web 网页,可以学习搜索引擎的工作原理和项目开发流程。

如何计算 Python 代码的 CPU 指令数?

作者开发了 Cirron 库来计算 CPU 指令数、分支未命中数及代码的时间损耗等指标。例如,执行 print("Hello") 大约需要 17000 个 CPU 指令,导入 seaborn 则需要约 20 亿个。

如何复用 Python 装饰器代码?

文章通过直观示例和解决过程,介绍了当多个装饰器要加在不同函数上且可能有不同传参时,如何复用这些装饰器,可以加深对装饰器的理解和掌握高阶运用。

Asyncio 中的 Task 是如何工作的?

文章介绍了 Asyncio 的工作原理以及任务处理相关的函数用法,包括如何理解 Task 对象、如何等待一个任务、如何等待多个或一组任务。

Python 各版本有哪些主要变更?

文章梳理了一些重要语法和标准库的变更记录,并指出了每个版本终止维护的时间,例如 Python 3.8 将在今年 10 月 EOL。

将 Postgres 作为队列使用性能如何?

作者测试的结果是性能影响很小。文章还介绍了如何实现将 Postgres 作为队列使用,以及如何处理锁和事务、任务重试、处理任务超时等问题。

有哪些常用的 Django 软件包?

作者介绍了自己在所有 Django 项目中常用的 20 个软件包,这些包在 Django 核心功能之外提供了更丰富的功能。

🏷️

标签

➡️

继续阅读