Python 3.13 RC2 和 python313-nogil

2024-09-11 | Poplar at twilight | CC-BY-SA-4.0

Python 3.13 RC2 和 python313-nogil

Python 3.13 RC2 现已在 Tumbleweed 中可用。这个新版 Python 解释器将于 2024 年 10 月发布。

Python 3.13 中有很多变化和新功能,但我们也在 Tumbleweed 中引入了现有的实验性功能。

实验性 JIT 编译器

默认(python313)构建带有 --enable-experimental-jit=yes-off 标志。这表示你可以使用下列环境变量启用该实验性 JIT

$ PYTHON_JIT=1 python3.13

有关于 JIT 编译器以及如何提高性能的更多信息另见 PEP-744

自由线程 CPython(无 GIL)| Free threaded CPython (no GIL)

在新版 Python 解释器中,可以选择在不使用著名的 Global Interpreter Lock(GIL)的情况下进行构建。这真是一个实验性功能,那么有什么理由不去实现呢?所以我们决定构建一个新软件包(python313-nogil)来实现这个功能。

这个新软件包是一个独立的解释器,因此安装时不会与 python313 发生冲突。该软件包使用 --disable-gil 选项构建,并提供 /usr/bin/python3.13t 二进制文件。它默认使用 /usr/lib/python3.13t/site-packages 来获取第三方库,因此在默认配置下,它不会使用任何 python 3.13 模块。

这意味着现在可以在 Python 解释器中使用 threading.Thread,并且它将是实际的线程(thread),因此,在 python3.13t 中使用线程后,解释器应该会快很多。

目前,Tumbleweed 中没有适用于该解释器的软件包。因此,如果您想使用第三方库,您应该使用 virtualenvpip

$ 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

原文:Python 3.13 RC2, with and without GIL,作者:Douglas DeMaio

分享帖子: