Python猫 2024年07月09日
Python 潮流周刊#39:Rust 开发的性能超快的打包工具
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本周刊分享优质的 Python、AI 及通用技术内容,包含 Rust 开发的 Python 打包工具 uv、Rye 项目管理工具、用 Rust 开发的 Python 库、搜索引擎实现、Python 装饰器、Asyncio 任务处理、使用 textwrap 操作字符串、Python 版本变更、将 Postgres 作为队列使用、Django 常用包、元类应用、气象数据编程挑战等内容。同时,还推荐了性能极快的 Python 包安装器 uv、基于 Web 的 SQLite 数据库工具 sqlite-web、Celery 指标导出器 celery-exporter、自动升级 Python 语法的工具 pyupgrade、Ollama Python 库、网页转 PDF 工具 web2pdf、文本生成 SQL 大模型 natural-sql、自动生成 Python 脚本的工具 rawdog、基于 UI 与 Windows 系统交互的 AI 代理 UFO、日志文件查看工具 toolong、个人可穿戴 AI Owl、响应式 Web UI 框架 hyperdiv、AI 增强人类项目 fabric 等项目和资源。

🚀 **Rust 崛起:** 本周刊重点关注 Rust 在 Python 生态中的应用。Rust 正逐渐取代 C 语言,成为 Python 高性能后端支撑的最佳选择。文章介绍了 Rust 与 C 相比的优势,并列举了一些知名 Python 库使用 Rust 开发的案例。

🔍 **从零构建搜索引擎:** 一篇文章详细介绍了如何用 Python 实现一个简单的搜索引擎,涵盖了数据获取、解析、索引、排序、Web 网页呈现等步骤。读者可以学习搜索引擎的工作原理,并掌握项目开发流程。

🧩 **装饰器进阶:** 如何复用多个装饰器,并针对不同函数传递不同的参数?文章用直观的示例和解决过程,帮助读者深入理解 Python 装饰器的高级运用。

🏃 **Asyncio 深入浅出:** 文章讲解了 Asyncio 中 Task 对象的含义,以及 Asyncio 协程的工作原理。通过介绍如何等待单个、多个或一组任务,帮助读者掌握 Asyncio 任务处理的最佳实践。

📚 **版本更新与 EOL 时间:** 文章梳理了 Python 不同版本的主要变更点,并指出了每个版本的终止维护时间。这对于开发者选择和使用 Python 版本具有重要参考价值。

📊 **将 Postgres 作为队列:** 本文探讨了将数据库直接用作队列的可能性,并测试了其性能影响。文章介绍了如何实现 Postgres 队列,以及如何处理锁、事务、任务重试和超时等问题。

🛠️ **Django 常用包:** 作者分享了自己在 Django 项目中经常使用的 20 个软件包,这些软件包可以帮助开发者构建更复杂的 Web 项目,并提供更丰富的功能。

🧠 **元类揭秘:** 文章解释了 Python 元类的概念和工作原理,并用现实例子演示了元类的强大用途。虽然元类并不常用,但它是一个值得学习和了解的高级特性。

🌪️ **气象数据编程挑战:** 文章介绍了一个编程挑战项目,需要处理 100,000 个气象数据文件,总大小 2.5 TB。作者给出了自己的实现方案,并分享了优化成本的策略。

📦 **性能极快的 Python 包安装器:** uv 是一个用 Rust 开发的 Python 包安装器,速度极快,可直接替换 pip、pip-tools 和 virtualenv。

💻 **基于 Web 的 SQLite 数据库工具:** sqlite-web 是一个基于 Flask 开发的 Web 端 SQLite 管理工具,可视化管理数据库、数据表、数据项和索引等。

📈 **Celery 指标导出器:** celery-exporter 可实时获取 Celery 的任务状态、工作线程、活动任务数等监控指标,并提供 Grafana 仪表板和 Prometheus 告警功能。

🤖 **自动升级 Python 语法:** pyupgrade 可以自动删除冗余写法、用新语法重写过时的代码、用更优雅的写法重构代码等。

🧠 **Ollama Python 库:** ollama-python 支持 Python 3.8+,可简单快速集成 Llama 2、Code Llama、mistral、gemma 等大语言模型。

🖨️ **网页转 PDF 工具:** web2pdf 可以将网页转换为格式精美的 pdf,支持批量转换、自定义样式、附加 CSS、复杂布局、页码、目录和分页符等功能。

💬 **文本生成 SQL 大模型:** natural-sql 是一个文本生成 SQL 大模型,在 SQL-Eval 基准测试中领先 GPT-3.5-turbo 和 claude-2。

🐍 **自动生成 Python 脚本:** rawdog 是一个自动生成并执行 Python 脚本的工具,可以自己运行脚本并获取输出作为上下文,然后再次调用自己。

🖥️ **基于 UI 与 Windows 系统交互的 AI 代理:** UFO 是微软新推出的 AI 代理框架,可无缝跨多应用操作,完成用户的复杂任务。

🪵 **日志文件查看工具:** toolong 是一个在命令行终端快速查看日志文件的工具,支持实时尾随、语法高亮、快捷搜索、自动检测时间戳合并日志等功能。

⌚ **个人可穿戴 AI:** Owl 是一个在可穿戴设备上搭载 AI 的项目,支持 ESP 平台、Sony Spresense 或 Apple Watch 等硬件。

🎨 **响应式 Web UI 框架:** hyperdiv 是一个用 Python 快速开发响应式 UI 应用的框架,具有内置组件、简洁的即时模式语法和少量的工具样板。

💪 **AI 增强人类:** fabric 项目旨在使每个人能将 AI 用于解决日常问题,它将问题拆解成很多独立组件,使用结构化的清晰提示让 AI 完成任务。

你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。本周刊开源,欢迎投稿。另有电报频道作为副刊,补充发布更加丰富的资讯,欢迎关注。

?文章&教程

1、uv:Rust 开发的 Python 打包工具
Ruff 所属团队用 Rust 开发的一个利器:Python 的包解析与安装器uv !它被设计为 pippip-tools 的直接替代品,不使用缓存时比它们快 8-10 倍。也可通过 uv venv 用作虚拟环境管理器,比 python -m venv 快 80 倍,比virtualenv 快 7 倍。(附:一篇中文翻译
2、Rye:愿景延续
Rye 是 Flask 作者在去年 4 月发布的 Python 打包和项目管理工具,作者在文章中总结了它已实现的功能(下载 Python、管理虚拟环境、构建和发布包、linting 和格式化、依赖管理等) ,介绍了自己的设计想法。(附1:作者的 16 分钟教程视频 Rye: a Hassle-Free Python Experience)(附2:上一则分享的 uv 团队已接管了 Rye,将来会融合成一个。Rye Grows With UV
3、为什么越来越多用 Rust 开发的库?
Rust 正在逐步取代 C 语言成为 Python 的高性能后端支撑。文章介绍了 Rust 相比 C 的优势所在,介绍了用 Rust 开发的一些知名的 Python 库。
4、80 行 Python 实现一个搜索引擎
这篇文章略微标题党了,但是文章介绍的内容很完整:基于 RSS 的异步爬虫、倒排索引、搜索排名、基于 FastAPI 的 Web 网页。可以学习搜索引擎的工作原理,学习从数据获取、数据解析、开放接口、到网页呈现的项目开发流程。
5、如何计算 Python 中的 CPU 指令数?
你知道执行 Python 的 print("Hello") 大约需要多少个 CPU 指令么?答案是 17000。导入 seaborn 则需要大约 20 亿个。作者开发了 Cirron 库以计算 CPU 指令数、分支未命中数及代码的时间损耗等指标。
6、Python 复用装饰器代码
有多个装饰器要加在不同的函数上,而且相同的装饰器可能有不同传参,如何复用这些装饰器?问题初看可能不好理解,文章中有直观示例和解决过程,可以加深你对装饰器的理解和掌握高阶运用。
7、像专业人士一样处理 Asyncio 任务
如何理解 Asyncio 中的 Task 对象?Asyncio 协程的工作原理是什么?如何等待一个任务,又如何等待多个或一组任务?文章介绍了 Asyncio 的工作原理以及任务处理相关的函数用法。
8、使用 textwrap 模块操作字符串
文章介绍了 textwrap 库的几个主要功能,例如 shorten() 裁剪字符串长度、wrap() 将字符串等宽分割、dedent() 处理字符串缩进等。
9、总结 Python 版本间的主要变更点
Python 的一些新特性是在什么版本引入的?作者为了方便,梳理了一些重要语法和标准库的变更记录,同时也指出了每个版本终止维护的时间(例如 Python 3.8 将在今年 10 月 EOL)。(附:这个网站可以查看 Python 及很多项目的 EOL 时间)
10、将 Postgres 作为队列使用
直接将数据库作为队列使用,性能会不会很受影响?作者测试的结果是影响很小。具体该如何实现将 Postgres 作为队列使用?如何处理锁和事务、任务重试、处理任务超时等问题?
11、我在所有 Django 项目中都用的 20 个包
Django 框架适用于构建复杂的 Web 项目,作者介绍了自己常用的 20 软件包,在 Django 自身的核心功能之外,提供了更丰富的功能。
12、Python 元类的真实案例
Python 中的元类是什么?为什么要学习元类?这个高级特性并不常用,但值得学习了解。文章介绍了元类的工作原理,并用现实例子演示它的强大用途。
13、一万亿行气象数据的编程挑战
一个编程挑战项目:有 100,000 个文件,每个文件 1000 万行,计算每个气象站的最低、平均和最高温度。数据存储在 S3 上,总大小 2.5 TB。作者给出了自己的实现(运行 8.5 分钟),以及优化成本的方案。
?Python潮流周刊?每 30 期为一季,第一季的精华内容已整理成一篇,方便你随时查看。在线访问地址:Python 潮流周刊第一季精华合集(1~30)

?️项目&资源

1、uv:性能极快的 Python 包安装和解析器
用 Rust 开发的速度极快的 Python 包安装器和解析器。Ruff 团队作品。可直接替换 pippip-toolsvirtualenv 常用命令。(star 6.6K)
2、sqlite-web:基于 Web 的 SQLite 数据库工具
基于 Flask 开发的 Web 端 SQLite 管理工具,可视化管理数据库、数据表、数据项和索引等,支持 JSON 和 CSV 格式文件的导入导出。(star 2.6K)
3、celery-exporter:导出 Celery 指标用于 Prometheus
实时获取 Celery 的任务状态、工作线程、活动任务数等监控指标,遵循 Prometheus 导出器最佳实践,并利用 Celery-mixin 提供了 Grafana 仪表板及 Prometheus 告警功能。
4、pyupgrade:自动升级 Python 较新版本的语法
一个强力的工具和 pre-commit 钩子,可以自动删除冗余写法、用新语法重写过时的代码、用更优雅的写法重构代码,等等。项目文档中给出了很多例子,推荐阅读。(star 3.2K)
# 两个重写成字典推导式的示例-dict((a, b) for a, b in y)+{a: b for a, b in y}-dict([(a, b) for a, b in y])+{a: b for a, b in y}
5、ollama-python: Ollama Python 库
支持 Python 3.8+,简单快速集成 Llama 2、Code Llama、mistral、gemma 等大语言模型,可自定义客户端,还可创建异步客户端。
6、web2pdf:将网页转换为 PDF 的 CLI
一个命令行工具,可将网页转换为格式精美的 pdf。支持批量转换、自定义样式、附加 CSS、复杂布局、页码、目录和分页符等功能。
7、natural-sql:文本生成 SQL 的大语言模型
NaturalSQL-7B 是拥有超高准确性的文本生成 SQL 大模型,在 SQL-Eval 基准测试中领先 GPT-3.5-turbo 和 claude-2,也领先于同数据规模的 sqlcoder-7b。
8、rawdog:在 CLI 中自动生成并执行 Python 脚本
Rawdog(具有确定性输出生成的递归增强)是 RAG(检索增强生成)的一种新颖替代方案,可以自己运行脚本并获取输出作为上下文,然后再次调用自己。演示视频的例子很惊艳。(star 1.6K)
9、UFO:基于 UI 与 Windows 系统交互的 AI 代理
微软新推出的 AI 代理框架,可无缝跨多应用操作,完成用户的复杂任务。使用 GPT-Vision 的多模态功能来理解应用 UI,使用 Windows UI 自动化控件交互。(star 1.9K)
10、toolong:查看、跟踪、合并和搜索日志文件(以及 JSONL)的终端应用
在命令行终端快速查看日志文件,支持实时尾随、语法高亮、快捷搜索、自动检测时间戳合并日志等功能,支持 JSONL 文件,可自动打开 .bz 和 .bz2 文件。(star 2K)
11、Owl:在本地运行的个人可穿戴 AI
在可穿戴设备上搭载 AI,倾听和观察你生活中发生的一切。支持 ESP 平台、Sony Spresense 或 Apple Watch 等硬件,支持本地和在线模型,多模态采集,说话人验证等。
12、hyperdiv:用 Python 构建响应式 Web UI
一个用 Python 快速开发响应式 UI 应用的框架,具有内置组件、简洁的即时模式语法和少量的工具样板。支持 Shoelace 组件,支持 Markdown,集成 Chart.js 图表,支持读写浏览器缓存,支持表单验证等。
13、fabric:使用 AI 增强人类
这个项目旨在使每个人能将 AI 用于解决日常问题。它的方法是将问题拆解成很多独立组件,使用结构化的清晰提示让 AI 完成任务。(star 5.6K)

?播客&视频

1、Meta 喜欢 Python
Meta 官方的一期播客节目,讨论了开发团队对最新 Python 版本的贡献,包括允许自定义 JIT(如 Cinder)的新钩子、永生对象、对类型系统的改进、更快的推导式等等。Meta 对 Python 社区的贡献确实很足哦~(附:谷歌、微软、Meta?谁才是 Python 最大的金主?
2、Talk Python To Me #449:使用 FastUI 构建 UI
FastUI 是一个 Web 界面开发框架,可使用 React 构建响应式 Web 应用,而无需编写任何 JavaScript 或接触 npm。这期播客的嘉宾是该框架的作者。

?欢迎订阅

本周刊已持续连载一年,更新内容接近 11 万字。希望周刊能成为你高质量的信息筛选器,成为你开阔视野的一扇明窗。目前已开通付费专栏,欢迎你来订阅:https://xiaobot.net/p/python_weekly

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Python AI Rust 搜索引擎 装饰器 Asyncio Django 元类 数据处理 包管理 数据库 监控 大语言模型 工具 框架
相关文章