重磅:Python 迎来多线程重大更新 no-GIL

“在 Python 中,GIL 将不复存在。对 AI 生态系统来说是巨大的胜利。”PyTorch 核心维护者 Dmytro Dzhulgakov 感慨地说道。
noGIL

GIL 是什么?GIL 的全称是 Global Interpreter Lock(全局解释器锁),这不仅是 Python 的特性,而是在实现 CPython(Python 解释器)时引入的一个概念。我们可以将 GIL 理解为一个互斥锁,用于保护 Python 中的对象,防止多个线程同时执行 Python 字节码,从而确保线程安全。

然而,GIL 有一个缺点,那就是一次只有一个线程能在一个 CPU 上执行,多个线程无法映射到多个 CPU,因此 Python 无法实现真正的多线程并发,从而降低了执行效率。

现在,Python 团队已正式接受了移除 GIL 的提案,并将其作为可选模式,这对开发者来说是件好事。

这项贡献是由 Meta 公司的软件工程师 Sam Gross 完成的,他花费了四年多的时间来完成这个项目。

听到这个消息后,大家都报以热烈的掌声。深度学习三巨头之一的 Yann LeCun 发来了祝贺的消息:没有了 GIL,Python 代码现在可以自由地执行多线程了。
YY

Python 不再有 GIL。
Python

从 Python 中移除 GIL,将呈现出语言能力指数级增长。
hh

关于详情,请看下文。

CPython 核心开发者 Thomas Wouters 详细介绍了无 GIL 的 Python,并展望未来。

非常感谢大家对无 GIL 提案的反馈,以及整体的积极支持。管理委员会打算接受无 GIL 提案,并在下文中与大家分享具体细节。

基本假设是:

  • 长期来看(大约 5 年以上),无 GIL 构建应该是唯一的构建方式;
  • 我们希望在考虑到向后兼容性时要非常小心。我们不希望出现另一个 Python 3 的情况,即所有第三方代码的更改都应仅适用于有 GIL 的构建(尽管仍需解决与旧版 Python 的向后兼容性问题)。这对于 Python 4 是行不通的。我们仍在考虑 ABI 兼容性等这两种构建的要求和其他细节,以及对向后兼容性的影响;
  • 在我们完全过渡到无 GIL 设置之前,希望看到社区的支持。我们不能仅仅改变默认设置,我们希望社区能够想出支持我们的方法。我们的核心开发团队需要在新的构建模式和相关内容上获得经验。我们需要解决现有代码的线程安全性问题,并需要找出新的 C API 和 Python API。我们还需要将这些见解传达给 Python 社区的其他人,并确保我们希望进行的更改以及我们希望其他人进行的更改是可取的;
  • 在我们默认设置为无 GIL 之前的任何时候,如果发现对收益太小而过于破坏性,我们希望能够改变主意。这也意味着我们撤销所有的工作,因此无 GIL 特定的代码应该在我们决定将无 GIL 设置为默认之前是可以识别的。

目前,我们认为前进的道路可以分为三个阶段:

  • 短期内,我们将使无 GIL 构建成为一种实验性的构建模式,可能在 3.13(或许是 3.14)中。这是实验性的,因为我们的核心开发团队虽然支持这种构建模式,但并不指望整个社区都支持它。我们需要时间来弄清楚我们想要做什么,至少在 API 设计、打包和分发方面,以便我们能够得到社区的支持。我们还不鼓励分发者将实验性的无 GIL 构建作为默认解释器发布。
  • 中期内,在我们有足够的社区支持确保无 GIL 的生产使用是可行的情况下,我们将支持无 GIL 构建,但不会默认支持,而是在某个目标日期或某个 Python 版本中成为默认方式。确切的时间取决于许多因素,例如 API 更改最终有多兼容,社区认为他们还需要做多少工作等等。我们预计这将需要至少一到两年的时间。一旦我们宣布支持,可以预期一些分发者会开始默认发布无 GIL 构建。
  • 长期来看,我们希望无 GIL 成为默认选项,并移除所有 GIL 的痕迹(但不会不必要地破坏向后兼容性)。我们不想等待太久,毕竟同时存在两种常用的构建模式会给社区带来很大的负担(例如需要双倍测试资源和调试场景)。但我们也不能太仓促。我们认为这个过程将需要五年的时间。

当然,在整个过程中,我们的整个开发团队都需要实时评估进展并对时间表进行调整。

对于 GIL 可选化,你有什么想法呢?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/471141.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[Qt学习笔记]Qt下使用Halcon实现采图时自动对焦的功能(Brenner梯度法)

目录 1、介绍2、实现方法2.1 算法实现过程2.2 模拟采集流程 3、总结4、代码展示 1、介绍 在机器视觉的开发中,现在有很多通过电机去做相机的聚焦调节,对比手工调节,自动调节效果更好,而且其也能满足设备自动的需求,尤…

从零开始学习typescript系列6: typescript各种类型以及类型特殊使用

基础类型的分类 常用 boolean: 布尔值number: 支持2/8/10/16进制string: 字符串enum: 枚举类型&#xff0c;可根据value找到keyarray: 普通数组&#xff0c;有2种方式&#xff0c;string[]或者 Array<string>tuple: 特殊数组&#xff0c;指定数组里的每个元素的类型&am…

内存条@电脑支持的最大内存@升级内存硬件

文章目录 电脑支持的最大内存规格cpu官网查看支持的规格命令行查看脚本化 DDR内存LPDDR内存内存升级扩展&#x1f47a;插槽检查板载内存SPD内存厂商其他 内存参数&#x1f47a;性能指标使用软件查看更多内存相关的软件工具 电脑支持的最大内存规格 确认电脑最大支持内存大小和频…

Android14之selinux报错:ERROR: end of file in comment(一百九十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

HR人才测评,招聘游戏测评师的入职测评方案

一、 游戏测评师的基本工作标准 1、 编写测试用例&#xff0c;及时提交并复测回执BUG&#xff0c;针对功能不完善的地方给出合理建议。 2、 可以按时保质保量完成组长布置的测试任务&#xff0c;并尽可能多的并行多个测试项。 3、 可以独立完成与项目组沟通&#xff0c;并…

公众号获取token失败,当日access_token超过1万次处理

问题&#xff1a;如果你当日的 access_token 获取次数已经超过了 1 万次&#xff0c;那么很有可能是由于频繁获取 access_token 而被微信限制了。在这种情况下&#xff0c;你需要等待到下一个自然日或者等待一段时间后再尝试获取 access_token。或者直接去公众号去刷新掉用量。…

数据分析-Pandas序列滑动窗口配置参数

数据分析-Pandas序列滑动窗口配置参数 数据分析和处理中&#xff0c;难免会遇到各种数据&#xff0c;那么数据呈现怎样的规律呢&#xff1f;不管金融数据&#xff0c;风控数据&#xff0c;营销数据等等&#xff0c;莫不如此。如何通过图示展示数据的规律&#xff1f; 数据表&…

「Swift」AttributedString常见使用方法

前言&#xff1a;AttributedString是Apple推出的可以实现单个字符或字符范围带相应属性的字符串。属性提供了一些文本特性&#xff0c;可以让文本展示的样式更加丰富。在日常开发过程中&#xff0c;我通常用于同一个Label中包含不同的字体大小或字体颜色的样式编写中。 使用举…

x86 32 64 Arm这些听过但不懂,都是什么?是架构还是系统?一文梳理

x86 听过吗&#xff1f;64位操作系统知道吧 和x86什么关系32和64都是什么东西&#xff1f;曾经的我也一头雾水&#xff0c;今天我才来整理一下&#xff0c;惭愧惭愧&#xff01;今天带着沉重的心情来梳理一下学习内容吧 如果你很熟悉很了解计算机的话&#xff0c;应该知道&…

物资管理系统建设方案

二、 项目概述 2.1 项目背景 2.2 现状分析 2.2.1 业务现状 2.2.2 系统现状 三、 总体需求 3.1 系统范围 3.2 系统功能 3.3 用户分析 3.4 假设与依赖关系 四、 功能需求 五、 非功能性需求 5.1 用户界面需求 5.2 软硬件环境需求 5.3 产品质量需求 5.4 接口需求 …

算力的尽头是光伏和储能——电力算力融合:能源问题的新思路

近年来&#xff0c;随着"数字中国"、数字经济等国家战略的推进&#xff0c;算力需求呈现爆发式增长。为了适应这一趋势&#xff0c;各地纷纷探索电力与算力融合发展的新模式。 在北京&#xff0c;北七家未来科技城站、怀柔北房站、丰台丽泽商务区站等多个"多站融…

UE4_官方动画内容示例1.1_使用动画资产

对一个SkeletalMeshActor进行设置&#xff0c;设置好之后&#xff0c;可以通过该Actor的细节&#xff08;Details&#xff09;面板播放指定的动画序列&#xff08;AnimationSequence&#xff09;资产&#xff08;例如让Actor翻跟斗并做开合跳&#xff09;。 骨架网格体定义&am…

QT配置libtorch(一步到位!!!防止踩坑)

QT配置libtorch Qt下载QT配置MSVCQT配置Libtorch Qt下载 Qt点击下载 Qt的安装选择MSVC2017 64-bit(一定要安装&#xff0c;这关乎后面的配置&#xff01;&#xff01;&#xff01;)&#xff0c;其他的根据自己的选择进行安装 QT配置MSVC Visual Studio点击安装 这里需要安装VS以…

vue2 中使用音频

vue2 中使用音频 在 template 页面 写入 audio 标签 <template><div><audio ref"moreAudio" :src"moreAudioSrc"></audio><audio ref"noAudio" :src"noAudioSrc"></audio></div> </t…

设计模式 适配器模式

1.背景 适配器模式&#xff0c;这个模式也很简单&#xff0c;你笔记本上的那个拖在外面的黑盒子就是个适配器&#xff0c;一般你在中国能用&#xff0c;在日本也能用&#xff0c;虽然两个国家的的电源电压不同&#xff0c;中国是 220V&#xff0c;日本是 110V&#xff0c;但是这…

STC 51单片机烧录程序遇到一直检测单片机的问题

准备工作 一&#xff0c;需要一个USB-TTL的下载器 &#xff0c;并安装好对应的驱动程序 二、对应的下载软件&#xff0c;stc软件需要官方的软件&#xff08;最好是最新的&#xff0c;个人遇到旧的下载软件出现问题&#xff09; 几种出现一直检测的原因 下载软件图标&#xf…

【算法专题--双指针算法】leecode-202. 快乐数(medium)、leecode-11. 盛最多水的容器(medium)

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 前言1. 快乐数&#xff0…

杰发科技AC7801——读取Flash数据做CRC校验

查看Keil的编译结果发现总共6160个字节。计算结果如下&#xff0c; 代码如下 #include "ac780x_crc.h" #include "ac780x.h" #include "ac780x_debugout.h" #include "string.h" #include "ac780x_eflash.h"#define TestSi…

静态网络配置

一、查看网络命令 1.命令行查看网络配置 1、查看ip\硬件设备-网卡 ifconfig -a ifconfig ens160 网卡名称 ip addr show ip addr show ens160 nmcli device show ens160 nmcli con up ens160 2、主机名称 hostname hostname hfj.huaxia.com 3、查看路由和网关 rou…

leetcode 3081

leetcode 3081 题目 例子 思路 使用minheap 记录字符出现频次 代码 class Solution { public:string minimizeStringValue(string s) {int freq[26]{};for(char c: s){if(c ! ?){freq[c-a];}}//std::greater<> 比较器比较 pair 对象时&#xff0c;默认比较规则是先比…