Python 3.13.0 重磅发布:性能起飞,GIL 不再是瓶颈!
大家好,我是风行者,一个拥有15年开发经验和教学经验的80后
Python 3.13.0 终于来了!
Python 3.13.0 的发布标志着 Python 发展历程中的一个重要里程碑。这次更新带来了多项令人振奋的改进,特别是在性能提升和 GIL(全局解释器锁)实验性支持方面,使 Python 在多线程和高性能计算领域更具竞争力。
真正的多线程性能测试
下图是开发者针对 Python 3.12 和 3.13 的性能测试对比,可以看到 no-GIL 和 JIT 带来的性能提升。
很多文章都提到了 Python 3.13.0 的性能提升,但并没有详细讲解。我们将从安装到运行测试代码,全程讲解如何禁用 GIL 实现真正的多线程,并测试其速度。
安装与运行测试
安装 Python 3.13.0:
- 以windows安装为例子,从python官网上下载
- 运行安装,到这一步勾选
- 安装完成后,从安装目录中查看会多出一个 “python3.13t.exe 这个就是禁用了GIL的解释器,我们使用这个解释器运行代码就可以实现真多线程
运行测试代码:
以pycharm为例,我新建一个项目
为了测量多线程程序的执行时间,我们可以在测试代码中添加开始时间和结束时间的记录。这样,我们就可以计算出程序的总运行时间,并评估禁用 GIL 后的性能提升。下面是测试运行10个线程代码,包含了时间测量:
import threading
import time
def worker(i):
print(f"线程 {i} 开始")
time.sleep(2)
print(f"线程 {i} 结束")
threads = []
# 记录开始时间
start_time = time.time()
for i in range(10):
t = threading.Thread(target=worker, args=(i,))
threads.append(t)
t.start()
for t in threads:
t.join()
# 记录结束时间
end_time = time.time()
# 计算并打印总运行时间
total_time = end_time - start_time
print(f"所有线程完成时间 {total_time:.2f} 秒.")
运行结果:
从结果上看到,10个线程几乎同步执行并同时结束!