查看原文
其他

Python 潮流周刊#14:Lpython 高性能编译器、Python 与 JavaScript 实现互通

豌豆花下猫 Python猫 2023-08-18

△点击上方“Python猫”关注 ,回复“1”领取电子书

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

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

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

🦄文章&教程

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

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

2、Cython 3.0.0 的文档[2]

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

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

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

4、Jupyter 中的生成式 AI[4]

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

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

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

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

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

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

7、Python 包版本控制的怪癖[7]

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

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

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

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

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

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

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

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

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

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

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

在终端与ChatGPT对话

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

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

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

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

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

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

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

🐿️项目&资源

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

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

路线图的一部分

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

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

可视化数据的处理过程

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

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

4、memray:Python 的内存分析器[28]

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

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

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

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

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

Rich的功能效果图

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

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

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

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

9、cudf:GPU 数据帧库[35]

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

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

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

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

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

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

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

🐢播客&视频

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

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

🐱赞助&支持

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

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

🐼欢迎订阅

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

参考资料

[1]

LPython:新颖、高性能、适用于多平台的 Python 编译器: https://lpython.org/blog/2023/07/lpython-novel-fast-retargetable-python-compiler/

[2]

Cython 3.0.0 的文档: https://cython.readthedocs.io/en/latest/src/changes.html

[3]

Python 中使用 Pandas 和 NumPy 计算变异系数: https://www.marsja.se/coefficient-of-variation-in-python-with-pandas-numpy/

[4]

Jupyter 中的生成式 AI: https://blog.jupyter.org/generative-ai-in-jupyter-3f7174824862

[5]

Python 中的结构化模式匹配: https://www.tartley.com/posts/structured-pattern-matching-in-python/

[6]

使用 Rich 的 Inspect 查看 Python 对象属性: https://textual.textualize.io/blog/2023/07/27/using-rich-inspect-to-interrogate-python-objects/

[7]

Python 包版本控制的怪癖: https://sethmlarson.dev/pep-440

[8]

PEP-440(版本标识和依赖规范): https://peps.python.org/pep-0440/

[9]

文件 I/O 并发编程的模式: https://superfastpython.com/file-io-concurrent-patterns/

[10]

如何高效地阅读 Python 代码?: https://mostlypython.substack.com/p/reading-code?nthPub=581

[11]

如何在 Python 中用 JPype 与 Pyjnius 调用 Java 代码?: https://www.askpython.com/python/examples/call-java-using-python

[12]

如何在 Python 中调用 JavaScript 代码?: https://dev.to/willp/call-javascript-code-in-python-551a

[13]

PythonMonkey: https://github.com/Distributive-Network/PythonMonkey

[14]

使用 WebAssembly 在 Python 中执行 Rust 代码: https://medium.com/@willkantorpringle/executing-rust-in-python-using-webassembly-d361eb5583da

[15]

使用 WebAssembly 在 Python 中调用 C 函数: https://medium.com/@willkantorpringle/calling-c-function-from-python-using-webassembly-63a305248951

[16]

使用 Textual 构建 ChatGPT TUI 应用程序: https://chaoticengineer.hashnode.dev/textual-and-chatgpt

[17]

Textual: https://github.com/Textualize/textual

[18]

Python 中的向量数据库入门: https://code.dblock.org/2023/06/16/getting-started-with-vector-dbs-in-python.html

[19]

CPython 的编译过程是怎样的?: https://dev.to/cwprogram/a-tour-of-cpython-compilation-cd5

[20]

介绍新开源的 Python 调试器 pdbp (Pdb+)!: https://dev.to/mintzworld/the-new-pdbp-pdb-python-debugger-2blc

[21]

https://pythoncat.top/tags/weekly: https://pythoncat.top/tags/weekly

[22]

PyFlo:一个很有趣的 Python 入门教学网站: https://pyflo.net/

[23]

Pandas Tutor:可视化 Pandas 执行过程的网站: https://pandastutor.com/

[24]

Python Tutor: https://pythontutor.com/

[25]

Pandas Tutor 移植到 Pyodide : https://blog.pyodide.org/posts/pandastutor/

[26]

ploomber-sql:使用 SQL 和 Jupyter 开发端到端的应用: https://ploomber-sql.readthedocs.io/en/latest/index.html

[27]

ploomber: https://github.com/ploomber/ploomber

[28]

memray:Python 的内存分析器: https://github.com/bloomberg/memray

[29]

第 12 期: https://pythoncat.top/posts/2023-07-22-weekly

[30]

pytest-memray: https://github.com/bloomberg/pytest-memray

[31]

textual-paint:终端中的 MS Paint: https://github.com/1j01/textual-paint

[32]

rich:在终端中提供富文本和美观的样式: https://github.com/Textualize/rich

[33]

json-lineage:支持解析大型 JSON 文件的工具: https://github.com/Salaah01/json-lineage

[34]

PythonMonkey:嵌入到 Python VM 中的 JavaScript 引擎: https://github.com/Distributive-Network/PythonMonkey

[35]

cudf:GPU 数据帧库: https://github.com/rapidsai/cudf

[36]

distill-sd:更小更快的 Stable Diffusion: https://github.com/segmind/distill-sd

[37]

HQTrack:高质量追踪视频中的任何事物: https://github.com/jiawen-zhu/HQTrack

[38]

awesome-mlops:很棒的 MLOps 工具精选列表: https://github.com/kelvins/awesome-mlops

[39]

Talk Python To Me #425:终极的 Python 内存分析器 Memray: https://talkpython.fm/episodes/show/425/memray-the-endgame-python-memory-profiler

[40]

赞赏: https://img.pythoncat.top/wechat_code.png

[41]

买杯咖啡: https://www.buymeacoffee.com/pythoncat

[42]

微信公众号: https://img.pythoncat.top/python_cat.jpg

[43]

博客: https://pythoncat.top

[44]

RSS: https://pythoncat.top/rss.xml

[45]

Github: https://github.com/chinesehuazhou/python-weekly

[46]

邮件: https://pythoncat.substack.com

[47]

Telegram: https://t.me/pythontrendingweekly

[48]

Twitter: https://twitter.com/chinesehuazhou

如果你觉得本文有帮助
请慷慨分享点赞,感谢啦

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存