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

  1. 以windows安装为例子,从python官网上下载
  1. 运行安装,到这一步勾选


  1. 安装完成后,从安装目录中查看会多出一个 “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个线程几乎同步执行并同时结束!

相关文章

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 模块:较低级...