与 Python 3.12 相比,Python 3.13 带来了主要的新功能,其中之一是自由线程模式,它禁用全局解释器锁,允许线程更多地并发运行。
这是一个实验性功能,如果您想尝试一下,可以从这里下载 Python 3.13 的测试版:https://www.python.org/downloads/release/python-3130b3/
当您使用--disable-gil 选项配置 Python 时,GIL 将被禁用,该选项只不过是安装时的构建配置(自由线程构建)。这将允许使用环境变量 PYTHON_GIL 选择性地启用和禁用 GIL ,该变量可以分别设置为 1 和 0 。 它还将提供命令行选项-X gil ,也可以将其设置为 0 (禁用)和 1 (启用):
python3 -X gil=0 sample.py
python3 -X gil=1 sample.py
单线程和多线程之间的差异并不大,但在多进程任务的情况下我们可以看到相当大的差异。 使用 Python v3.12 ,GIL 运行 gil.py:
python gil.py
Python version: 3.12.2 (tags/v3.12.2:6abddd9, Feb 6 2024, 21:26:36) [MSC v.1937 64 bit (AMD64)]
GIL cannot be disabled
Single-threaded: Factorial Computed.
Single-threaded time taken: 9.04 seconds
Multi-threaded: Factorial Computed.
Multi-threaded time taken : 8.21 seconds
Multi-process: Factorial Computed.
Multi-process time taken : 5.64 seconds
Python 3.13 在没有 GIL 的情况下运行 gil.py:
D:/SACHIN/Python13/python3.13t gil.py
Python version: 3.13.0b3 experimental free-threading build (tags/v3.13.0b3:7b41395, Jun 27 2024, 16:17:17) [MSC v.1940 64 bit (AMD64)]
GIL is disabled
Single-threaded: Factorial Computed.
Single-threaded time taken: 9.28 seconds
Multi-threaded: Factorial Computed.
Multi-threaded time taken : 4.86 seconds
Multi-process: Factorial Computed.
Multi-process time taken : 6.14 seconds
可以看到,Multi-threaded 多进程任务的情况下我们可以看到相当大的性能差异。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.