Skip to content

Latest commit

 

History

History
161 lines (85 loc) · 13.3 KB

2023-08-05-weekly.md

File metadata and controls

161 lines (85 loc) · 13.3 KB
title pubDate author
Python 潮流周刊#14:Lpython 高性能编译器、Python 与 JavaScript 实现互通
2023-08-05
豌豆花下猫

你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,本期分享的全部是英文材料。(标题取自其中两则分享,不代表全部内容都是该主题,特此声明。)

本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进 Python 技术,并增长职业和副业的收入。

周刊已开通 Telegram 频道,欢迎加入:https://t.me/pythontrendingweekly

🦄文章&教程

1、LPython:新颖、高性能、适用于多平台的 Python 编译器

最新发布的一个Python 编译器(当前为 alpha 版本),目标是打造高性能的 Python。可以将带有类型提示的 Python 代码编译为优化的机器代码,支持提前编译(AOT)与即时编译(JIT),支持与 CPython 互操作,支持多种后端,例如 LLVM、C、C++、WASM、Julia 和 x86。

2、Cython 3.0.0 的文档

Cython 是一门专用于提升 Python 性能的编程语言,最近从 0.29.x 版本直接升到了 3.0.0 版本,带来了大量的问题修复以及新特性,这份 changelog 文档非常丰富。(附一篇详解历时五年的 Cython3.0 都发生了哪些变化 ,总结了这个版本的几项较大的变化点。)

3、Python 中使用 Pandas 和 NumPy 计算变异系数

变异系数(Coefficient of Variation,CoV)是一种统计量,用于评估数据集相对于其均值的相对变异性或离散程度。文章介绍了变异系数的公式、解释、意义和实际用途,以及如何用 Pandas 和 Numpy 来计算变异系数。

4、Jupyter 中的生成式 AI

Jupyter Notebook 也支持 AI 功能了,目前免费提供。官博这篇教程指导了如何在聊天界面使用 Jupyter AI 完成各项任务。支持来自 AI21、Anthropic、AWS、Cohere、HuggingFace Hub 和 OpenAI 的大语言模型。

5、Python 中的结构化模式匹配

Python 3.10 版本的模式匹配语法,你用过了么?这篇文章探究了这种语法的相关要素(基本结构、每种模式的演示),也思考了是否真必要用模式匹配语法替换elif

6、使用 Rich 的 Inspect 查看 Python 对象属性

Rich 是一个在终端使用富文本和美观样式的库(本期周刊的“项目&资源”中有介绍),这篇文章介绍了它的 inspect() 函数,可以查看 Python 对象的属性以及可用的 API。

查看文件对象的属性与方法

7、Python 包版本控制的怪癖

一个冷门话题,讨论了 Python 包的版本号。我才知道 Python 包版本命名竟有 6 个组成部分!文章大部分内容是对 PEP-440(版本标识和依赖规范) 的介绍与解读,最后也介绍到了 Wheel 包的版本命名规则。

8、文件 I/O 并发编程的模式

使用并发编程来提升文件 I/O 操作的性能,具体有哪些使用手段呢?文章介绍了四种模式(单线程、线程池/进程池、批处理任务、在进程池中使用线程池),并讨论了该如何选择更合适的模式。

9、如何高效地阅读 Python 代码?

对于所有程序员来说,阅读代码都是一项必备能力。但是,如何高效地阅读与理解别人的代码呢?这篇文章介绍了一些阅读策略与技巧,同时站在阅读者的视角,也有助于我们写出更具可读性、可理解性的代码。

10、如何在 Python 中用 JPype 与 Pyjnius 调用 Java 代码?

Java 和 Python 各有优点,如何能将它们结合起来呢?这篇文章介绍了如何用 JPypePyjnius 等方式来调用 Java,同时指出实现方案所面临的挑战和限制。

11、如何在 Python 中调用 JavaScript 代码?

文章介绍了 PythonMonkey 库的用法,实现在 Python 中加载与运行 JavaScript 代码,以及在 Python 中使用 WASM。(附作者的其它文章:使用 WebAssembly 在 Python 中执行 Rust 代码使用 WebAssembly 在 Python 中调用 C 函数

12、使用 Textual 构建 ChatGPT TUI 应用程序

本期周刊有好几则内容与 Textual 相关!与图形用户界面(GUI)相比,文本用户界面(TUI)响应更快、系统要求更低和更易自动化。这篇文章使用 Textual 构建了一个 ChatGPT 对话工具。

在终端与ChatGPT对话

13、Python 中的向量数据库入门

如何在 Python 中使用当前热门的向量数据库呢?这篇文章介绍了使用 10 多种数据库来索引及搜索向量数据,包括 ClickHouse、OpenSearch、pgVector、Pinecone、Redis 等等。

14、CPython 的编译过程是怎样的?

CPython 是 Python 官方的解释器实现,这篇长文介绍了它的编译过程,包括语法解析、抽象语法树、字节码、pyc 解析等内容。

15、介绍新开源的 Python 调试器 pdbp (Pdb+)!

作者指出了 Python 内置的 pdb 与其它调试器(如 ipdb、pdbpp)的缺点,介绍了他开发的 pdbp 所作的修复和改进,以及简单的入门使用。这个库依赖项很少,功能强大,值得一试。

🎁Python潮流周刊🎁已免费发布了 14 期,访问下方链接,即可查看全部内容:https://pythoncat.top/tags/weekly

如果你觉得周刊有价值,请表达小小心意,赞赏一下猫哥吧~~

🐿️项目&资源

1、PyFlo:一个很有趣的 Python 入门教学网站

这个网站非常惊艳,推荐大家去体验下!主页是一幅学习线路图,画了不同的学习分支和内容分类,还有几个编程项目挑战,点击每个节点则跳转到对应内容的页面。(借鉴此网站的创意,开发面向中文读者的教学网站,应该会挺有趣)

路线图的一部分

2、Pandas Tutor:可视化 Pandas 执行过程的网站

你或许已知道 Python Tutor,它是一个提供了在线交互式 Python 编程环境的教学工具。这里介绍的 Pandas Tutor 也是类似的网站,它允许在浏览器中编写 Pandas 代码,并可视化数据的转换过程。 (附一篇文章,两位作者介绍了他们将 Pandas Tutor 移植到 Pyodide 的工作,以便大规模推广数据科学的教学)

可视化数据的处理过程

3、ploomber-sql:使用 SQL 和 Jupyter 开发端到端的应用

这是托管在 Read The Docs 上的一个教学课程,介绍了如何使用 SQL 和 Jupyter 作数据分析,包含操作数据库、高级查询技术、数据可视化(seaborn、plotly、ggplot)、项目打包部署与监控等章节。它出自于开源项目 ploomber (star 3.1K),后者是一个快速构建数据管道的项目。

4、memray:Python 的内存分析器

这是周刊第 12 期介绍过的 pystack 的姊妹项目,可以跟踪 Python 代码、C/C++ 扩展模块和 Python 解释器本身中的内存分配,支持本机模式与实时查看模式,可生成多种类型的报告。提供了 Pytest 插件 pytest-memray,可以在运行测试套后查看内存报告。(star 11K)

5、textual-paint:终端中的 MS Paint

MS Paint 是微软公司开发的一款简单的图像编辑软件。这个项目是 MS Paint 风格的 TUI 图像编辑器,支持在终端中打开与保存图像、MS Paint 中的所有工具、调色板、画笔预览等等功能。

6、rich:在终端中提供富文本和美观的样式

Rich 让终端不再单调,可以绘制漂亮的表格、进度条、markdown、源代码语法高亮以及栈回溯信息等。(star 44.2K)下面这张效果图,囊括了它的主要特色:

Rich的功能效果图

7、json-lineage:支持解析大型 JSON 文件的工具

这是用 Rust 开发的 JSON 解析库,主要解决大文件无法加载到内存的痛点,通过将 JSON 转化成 JSONL 格式,解决内存消耗问题。测试表明,处理一个 500MB 文件,Python 标准库要用 2GB 内存,但这个库仅需 1.5MB,而且速度差异很小。

8、PythonMonkey:嵌入到 Python VM 中的 JavaScript 引擎

前文已出现过 PythonMonkey,它将 Mozilla 的 SpiderMonkey JavaScript 引擎嵌入到 Python 虚拟机中,利用Python 引擎提供 JS 主机环境。这个项目的目标包括在 Python 中调用 JavaScript 库和在 JavaScript 中调用 Python 库,如果能有效打通这两种语言的生态,前途不可估量!

9、cudf:GPU 数据帧库

cuDF 基于 Apache Arrow 列式内存格式构建,是一个 GPU DataFrame 库,用于加载、连接、聚合、过滤和以其它方式操作数据。提供了类似 pandas 的 API,无需了解 CUDA 编程的细节。(star 5.8K)

10、distill-sd:更小更快的 Stable Diffusion

对 Stable Diffusion 作“知识蒸馏”后的小型化版本,可生成与 SD 质量相当的图像,同时速度更快、空间占用更少。

11、HQTrack:高质量追踪视频中的任何事物

一个对视频中对象作高性能跟踪和分割的框架,由视频多目标分割器(VMOS)和掩模优化器(MR)组成,可以同时跟踪多个目标物体并输出准确的物体掩模。

12、awesome-mlops:很棒的 MLOps 工具精选列表

一个 awesome 系列的 MLOps 精选列表,包含各种各样的项目/工具,以及文章、书籍、活动、播客和网站等等资源。

🐢播客&视频

1、Talk Python To Me #425:终极的 Python 内存分析器 Memray

本期的“项目&资源”介绍了 Memray,这里的播客节目邀请了两位嘉宾深入聊了这个项目。

🐱赞助&支持

如果你觉得周刊有价值,请随意赞赏买杯咖啡 进行支持!

如果你喜欢周刊,请分享给其他需要的同学,让更多人可以从中受益~

🐼欢迎订阅

  • 微信公众号:除更新周刊外,还发布其它原创作品,并转载一些优质文章。(可加好友,可加读者交流群)
  • 博客RSS:我的独立博客,上面有历年原创/翻译的技术文章,以及从 2009 年以来的一些随笔。
  • Github:你可以获取本周刊的 Markdown 源文件,做任何想做的事!
  • 邮件:在 Substack 上开通的频道,满足你通过邮件阅读时事通讯的诉求。
  • Telegram:除了发布周刊的通知外,我将它视为一个“副刊”,补充发布更加丰富的资讯。
  • Twitter:我的关注列表里有大量 Python 相关的开发者与组织的账号。