Python 3.13 取消了 GIL了吗?(python2版本将于2020年1月1日终止维护)

Python 3.13 已经发布,但 GIL(全局解释器锁)仍未完全移除。不过,Python 官方在 3.13 中继续推进了相关改进,以下是关键进展:


1. Python 3.13 的 GIL 状态

  • GIL 仍然默认启用,但引入了更成熟的 “Per-Interpreter GIL”(PEP 684),允许在子解释器中禁用 GIL,适用于多线程并行计算。
  • nogil(无 GIL)模式仍在实验阶段,尚未成为默认选项,但可以通过编译选项或 API 启用部分功能。
  • 官方仍在评估完全移除 GIL 对现有 C 扩展和单线程性能的影响,预计 Python 3.14(2025 年 10 月发布) 可能进一步推进。

2. 如何尝试无 GIL 模式(Python 3.13)

如果想在 3.13 中使用无 GIL 特性:

  • 子解释器模式(Per-Interpreter GIL):
import _xxsubinterpreters as interpreters
interp_id = interpreters.create()
interpreters.run_string(interp_id, "import threading; print('Running without GIL!')")
  • 编译自定义分支:3.13版本可尝试源码编译,或者参考 Sam Gross 的 nogil 分支(需手动编译)。

3. 未来路线图(Python 3.14+)

  • 2025 年:Python 3.14 可能进一步优化无 GIL 模式,甚至提供 可选的无 GIL 解释器(需显式启用)。
  • 长期目标:完全移除 GIL,但需确保不影响单线程性能和 C 扩展兼容性。

4. 当前替代方案

如果需高性能并行计算:

  • 多进程:multiprocessing 或 concurrent.futures.ProcessPoolExecutor。
  • 异步编程:asyncio(I/O 密集型任务)。
  • 外部工具:用 Rust/C++ 编写无 GIL 扩展(通过 PyO3 或 Cython 的 nogil 模式)。

总结

  • Python 3.13(2024)未移除 GIL,但改进了子解释器隔离和无 GIL 实验支持。
  • 完全移除 GIL 预计在 3.14 或更高版本(2025 年10月以后)。
  • 官方会谨慎推进,确保兼容性。建议关注 Python 官方博客 获取最新动态。

如需最新进展,可查看 Python 3.13 发布说明 或 PEP 684。


将陆续更新 Python 编程相关的学习资料!

作者:ICodeWR

标签:#在头条记录我的2025# #编程# #python#


相关文章

python 锁Lock功能及多线程程序锁的使用和常见功能示例

锁(Lock)是Python中的一个同步原语,用于线程之间的互斥访问。它可以用来保护共享资源,确保在任意时刻只有一个线程可以访问共享资源,从而避免多线程并发访问引发的数据竞争和不一致性。下面分别详细说...

python 多线程程序加锁、解锁、锁应用场景示例

锁(Lock)是Python中的一个同步原语,用于线程之间的互斥访问。它可以用来保护共享资源,确保在任意时刻只有一个线程可以访问共享资源,从而避免多线程并发访问引发的数据竞争和不一致性。下面分别详细说...

Python中的“锁”艺术:解锁Lock与RLock的秘密

Python中的“锁”艺术:解锁Lock与RLock的秘密引言随着计算机性能的不断提升以及多核处理器的普及,多线程编程已成为现代软件开发不可或缺的一部分。然而,当多个线程试图同时修改同一份数据时,就可...

24-2-Python多线程-线程操作(python多线程怎么用)

2-线程操作在Python程序中,可以通过“_thread”和“threading(推荐使用)”这两个模块来处理线程。在Python 3程序中,thread模块已废弃。可以使用 threading 模...

Python 如何通过 threading 模块实现多线程。

先熟悉下相关概念多线程是并发编程的一种方式,多线程在 CPU 密集型任务中无法充分利用多核性能,但在 I/O 操作(如文件读写、网络请求)等待期间,线程会释放 GIL,此时其他线程可以运行。GIL是P...

python线程之十:线程 threading 最终总结

小伙伴们,到今天 threading 模块彻底讲完。现在全面总结 threading 模块1、threading模块有自己的方法详细点击【threading模块的方法】threading 模块:较低级...