Python 潮流周刊#14:Lpython 高性能编译器、Python 与 JavaScript 实现互通
△点击上方“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 各有优点,如何能将它们结合起来呢?这篇文章介绍了如何用 JPype 和 Pyjnius 等方式来调用 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 对话工具。
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)下面这张效果图,囊括了它的主要特色:
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 相关的开发者与组织的账号。
参考资料
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