淘姐妹

淘姐妹

pythongil事件

电脑 0

作者 | Bite Code

译者 | Sambodhi

策划 | 褚杏娟

本文介绍了几个 Python 相关的更新和新功能。首先,Python 摆脱了 GIL(全局解释器锁)。接着,我们看到了 LPython 的发布,这是一个新的 Python 编译器,同时还有 Pydantic 2 版本的发布,该版本更加可用。接下来,我们讨论了 【【微信】】,该提案定义了软弃用,并且 getopt 和 optparse 被软弃用。紧接着,Cython 3.0 版本发布,对纯 Python 支持更加出色。另外,【【微信】】 也在文中提及,该提案定义了单文件脚本的依赖规范。最后,我们还讨论了在 VSCode 上 Python 支持的改进,以及终端中运行的画图程序。这些更新和新功能为 Python 开发者带来了更多的选择和便利。

永远摆脱 GIL 的 Python

上个月,全局解释器锁(Global Interpreter Lock,GIL)再次成为关注的焦点。这个月,甚至连 Facebook 的母公司 Meta 都参与其中:

如果 PEP 703 被接受,Meta 将会承诺支持,在 CPython 中提供三名工程师年的 nogil(无 GIL)支持。(注:"engineer years" 指的是一名工程师在一年内的工作时间。)

很高兴看到越来越多的大公司为 Python 的成功做出贡献。与 2010 年代相比,这是一个巨大的变化。

关于 PEP 703 的讨论在核心开发人员中达到高潮,最后做出了一个正式声明,即将接受重新点燃激情的提案,但需要解决一些细节问题。

这意味着在未来几年内,Python 将摆脱全局解释器锁。

以下是计划:

短期内,将同时发布一个不受支持的实验性 Python 版本,该版本不包含 GIL,目标版本是 3.13/3.14。

中期内,将标记无 GIL 版本为正式支持版本,但仍然是 Python 带有 GIL 版本的替代品。将宣布一个目标日期,使其成为默认版本。这将只会在社区表现出足够支持的情况下发生,并将需要几年的时间。

长期内,无 GIL 版本将成为默认版本。在此之前,核心开发人员可以撤销该决定并中止无 GIL 项目,如果该项目被证明回报率不佳。

请注意,如果程序导入了一个单一的使用 GIL 的 C 扩展,在无 GIL 版本的构建中,它将自动切换回 GIL 版本。因此,这不是一个 2=>3 的情况,不会导致不兼容的代码破坏。

两种不同的构建版本的主要原因是管理未知的未知情况。事实上,没有人预料到无 GIL 会出现问题,但对于如此大的项目,你永远无法确定。ABI 兼容性很复杂,新扩展需要针对其进行显式编译,才能使其正常工作,所以需要社区的支持。

而且,无 GIL 兼容的扩展将在旧解释器上工作,因此不会出现类似 Python 3 代码不适用于 Python 2 的情况。

实际上,Python 代码本身不应受到影响,并且在其中一个版本上或另一个版本上都可以无缝工作,尽管在带有 GIL 的版本中线程被限制在单个核心上。

LPython:一个新的 Python 编译器

这是我没有预料到的消息。在《CPython、Pypy、MicroPython、Jython 是什么鬼?》(What's the deal with CPython, Pypy, MicroPython, Jython...?)这篇文章中,我们讨论了 Python 编译器,我认为我在列举所有重要内容方面做得相当不错。然而,LPython 团队决定在此基础上继续扩展。

LPython 是一个新的 BSD 3 编译器,它可以将 Python 代码翻译为 LLVM、C、C++ 或 WASM。它的目标不是编译整个程序,虽然它也能做到,但更像是 numba 和 cython 一样,让你加速数值瓶颈。基准测试非常有希望,并且在 AOT(Ahead-of-Time)和 JIT(Just-in-Time)之间切换的能力非常方便,尽管你仍然需要在机器上安装整个编译链。LPython 喜欢原始的 Python 代码,因此如果在片段中调用 Python 函数,你必须使用装饰器显式标记它为 Python 函数。因此,大多数人可能会将其用于非常具体的代码片段。

Pydantic 2 变得更加可用了

我一直在宣传 Pydantic 的第二个版本的到来,因为我和很多人都经常使用它进行数据验证和架构定义,而新版本更加快速。

没错,它上个月发布了稳定版,但如果你读过《缓解你的 Python 打包痛苦》(Relie【【微信】】 pain),你会知道我不鼓励人们使用最新版本的东西,除非用于测试或者娱乐。

事实上,即使是稳定的主要版本,也仍然需要完善,并且社区支持较少。

但现在发生了两件事情:

Pydantic 2.1 已经发布,第一批糟糕的错误已经被消除。

Fast API 宣布支持 Pydantic 2。因为它是 Pydantic 使用的最大推动力,所以这是一个里程碑。

现在,我将尝试在一个个人项目中使用它,如果有效,几个月后再将其应用于专业项目中。

【【微信】】 定义了“软弃用”,getopt 和 optparse 被软弃用

如果你还没有阅读 【【微信】】 的博客,我鼓励你去读一下。这是一篇技术性和原汁原味的博文,毫不掺杂废话,让你能够深入了解核心开发人员的贡献生活。最新一篇文章提到了我在上个月忽略的一件事:软弃用已被添加到 【【微信】】――向后兼容性策略。

这份于 2009 年创建的文档规定了 Python 项目如何处理弃用问题,现在它将包含以下内容:

当使用一个不应再用于编写新代码的 API 时,可以使用软弃用,但在现有代码中继续使用它仍然是安全的。该 API 保持文档化和测试,但将不再进行进一步开发(没有增强功能)。“软”弃用和(常规的)“硬”弃用的主要区别在于,软弃用不意味着计划移除被弃用的 API。

基本上,软弃用的 API 处于僵尸状态,永远维持存活状态,但将不会有任何进一步的开发工作,并明确建议不再使用它。

optparse 和 getopt 是两个曾经是解析脚本参数的事实标准解决方案的模块,现在被标记为"软弃用"。你可以永远使用它们,但你可能不应该这样做。

首先,argparse 是更现代的标准库解决方案,我们有一篇很好的文章介绍它。

其次,第三方项目如 typer 和 click 也存在。

Cython 3.0 发布,支持纯 Python 更好

Cython,最著名的 Python 编译器,发布了 3.0 版本。虽然此版本带来了各种改进,但有一个特别突出。Cython 以前一直存在一些限制:它使用 Python 的超集来表达其中的一些功能。

但根据发布说明,这已不再是问题:“现在应该可以用普通 Python 语法来表达所有 Cython 代码并使用所有功能”。

这意味着现在你应该能够使用任何 Python 代码库,只需全部使用 Cython 并观察结果。

【【微信】】 - 单文件脚本的依赖规范

尽管无 GIL 话题仍然活跃,但 【【微信】】 的提议确实激发了更多的讨论。

该提案旨在通过注释中的一种形式化语法,类似于 Groovy 的语法,来表达单个脚本的依赖关系。参考 PEP 本身中的示例:

重要的部分是:

现在这将被正式规范化,以便由第三方工具解析。这个概念并不新鲜,像 pip-run 这样的工具已经支持运行一个脚本,而你可以使用此类注释来描述其依赖关系:

这些包将被安装在临时虚拟环境中,并在运行后被删除,类似于 JS 世界中 npx 的做法。

这个 PEP 并不意味着 Python 或 pip 会集成这样的功能,目前只是在形式上对语法进行规范化。但我对这个提案有很大的希望,因为我有几个独立的 Python 脚本散落在那里,这样的功能对它们会有很大的好处,特别是如果未来可以保留这个虚拟环境。这样的提案可能显示出对此功能的需求,几年后,可能会导致 pip 采纳。例如,npx 影响了 npm create 的添加,允许从特定的包中获取项目模板。事实上,这是 npx 最常见的用例。

Python 在 VSCode 上的支持变得更加快速

如果你使用 VSCode,你可能已经注意到使用许多代码检查器会使 IDE 变得更慢。其中,Mypy 尤为缓慢,因为启动 mypy 命令的速度较慢,并且 VSCode 不使用它的守护进程模式。

但在新版本中,现在有了一个新的官方 mypy 扩展,它使用了 dmypy 守护进程。速度提升非常显著,编辑器现在可以对整个代码库进行检查,而不仅仅是当前文件。

此外,微软官方的 Python 支持扩展 pylance 将会持久化它在第三方库上执行的所有索引工作。这将导致更轻快的启动,对于大型项目而言,由于索引可能需要较长时间,特别是在运行速度较慢的计算机上,这将带来更快的体验。我个人必须在不允许修改的企业客户的笔记本电脑上工作,它们配备了大量的安全软件,这使得它们变得非常缓慢,每次点击任何东西后都会进行进程检查和网络调用来检查文件签名。因此这真是拯救了生命。

在终端中绘制画面

这真是太酷了:

这是一个在终端中运行的画图程序,借助 Python 库 textual 实现。

这可能不会改变你的生活,但太酷了。

我安装了它,反应速度真是快。它甚至可以处理 Ctrl-Z,并且在尝试保存作品时还提供了文件选择器。

原文链接:

https://www.【【淘密令】】v/p/【【微信】】gil-removed-a

声明:本文为 InfoQ 翻译,未经许可禁止转载。

点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!

今日好文推荐

都在追“新潮”技术,但你有大厂们的动作快吗?

大模型竞争突然升级!亚马逊 CEO 亲自监督、组建新的核心技术团队,集中优势资源打造“最具野心”的大语言模型

一场 AI 引发的开源革命迫在眉睫?Hugging Face 更改文本推理软件许可证,不再“开源”

“Twitter如今就像疯人院!”睡地板仍被裁女高管爆料:马斯克带来“恐惧文化”,被裁是最大解脱



beats头戴式耳机与airpodspromax beats max头戴式耳机

beats头戴耳机区别,beats头戴耳机好吗,beats头戴耳机哪款好,beats头戴耳机怎么样

Beats Pro 新品上市

今天,苹果推出了新款Beats Pro旗舰无线耳机,属于Beats产品线的旗舰系列,目标产品是Max。

与上一代相比,Beats Pro在外观上几乎没有什么区别,大家很难看出这是一款新品,但内部配置确实有了很大的提升。

与上一代相比,新款Beats Pro有以下改进:

更换全新40mm发声单元,音质大幅提升

主动降噪麦克风重新设计,降噪效果提升

部分重新设计的耳垫采用记忆海绵和无缝皮革

・支持有线连接,并可切换三种独特音效

・支持动态头部跟踪、空间音频功能

・・・

从媒体的评价和官方参数来看,这款Beats Pro无论是音质还是质感都非常不错,尤其是音质按照官方说法提升了80%,体验极其接近Max。

另外,Beats Pro还有一个非常好的特点,那就是相比于该系列只能在苹果设备上使用,Beats Pro可以完美支持安卓和苹果,甚至电脑连接。

目前该产品已在苹果官网上市苹果耳机煲音音乐苹果耳机煲音音乐,售价2899元,将于8月10日发售。

Max将支持无损

继Beats Pro发布后,苹果旗舰耳机Max再次有新消息曝光。

据开发者介绍,从代码来看,Max最终将支持无损音乐功能,但仅限于插件模式。 无线模式下由于传输速率等问题,无法实现无损播放。

目前,Max已经推出两年半了。 作为一款旗舰且昂贵的耳机,它不支持无损音乐播放苹果耳机煲音音乐,这让很多用户感到失望。

到目前为止,如果你想购买苹果的一款高端头戴式耳机,那么更贵的 Max 不如刚刚推出的 Beats Pro。