Python 3.13 RC2,有和没有 GIL
2024年9月11日 | Daniel García Moreno | CC-BY-SA-3.0
Python 3.13 RC2 现在可以在 Tumbleweed 中获得。这个新版本的 Python 解释器将于 2024 年 10 月发布。
3.13 中有 很多变化 和新特性,但我们也在 Tumbleweed 中带来令人兴奋的实验性特性。
实验性 JIT 编译器
默认 (python313) 构建具有 --enable-experimental-jit=yes-off 标志。这意味着如果你想使用这个 实验性 JIT,你可以通过环境变量启用它
$ PYTHON_JIT=1 python3.13
你可以在 PEP-744 中找到关于 JIT 编译器及其如何提高性能的更多信息。
无 GIL 的自由线程 CPython
有了这个新版本的 Python 解释器,可以选择不使用著名的 全局解释器锁,也就是 GIL。这是一个非常实验性的特性,但为什么不在 Tumbleweed 上拥有它呢?所以我们决定也构建这个新版本,并使用新的包 python313-nogil。
这个新包是一个隔离的解释器,所以你可以安装而不会与 python313 冲突。该包使用 --disable-gil 选项构建,并提供 /usr/bin/python3.13t 二进制文件。它默认使用 /usr/lib/python3.13t/site-packages 用于第三方库,因此,在默认配置下,它不会使用任何 python 3.13 模块。
这意味着现在你可以在 Python 解释器中使用 threading.Thread,并且它将是实际的线程,因此,最终使用线程的 python3.13t 解释器应该会更快。
目前 Tumbleweed 中没有这个解释器的包。所以如果你想使用第三方库,你应该使用 virtualenv 和 pip。
$ python3.13t -m venv free-threaded-env
$ source free-threaded-env/bin/activate
(free-threaded-env) $ pip install requests
(free-threaded-env) $ python3
Python 3.13.0rc2 experimental free-threading build (main, Sep 07 2024, 16:06:06) [GCC] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys; sys._is_gil_enabled()
False