python threading Python 3.13 重磅来袭!多线程性能提升内幕大揭秘
·
诸位好呀, 我乃风行者, 身为一名80后, 有着15年开发方面的经验, 同时也有着15年的教学经验。
3.13.0 终于来了!
3.首先, 13.0 的发布, 这一事件, 标志着, 其发展历程当中的, 一个重要的里程碑。其次, 这次更新, 带来了, 多项令人高兴且振奋的改进。然后, 特别是在性能提升, 以及 GIL(全局解释器锁)实验性支持方面。最后, 这使得, 在多线程和高性能计算领域, 更具备竞争力。
真正的多线程性能测试
该开发者所进行的, 针对3.12以及3.13的性能测试对比, 以图形呈现, 从中可知, no - GIL与JIT带来了性能方面具有的提升。

诸多文章均有提及, 说是 3.13.0 有着性能方面的提升, 然而呢, 却并未给出详尽的讲解。我们这里, 将会对于自安装程序起始, 一直到运行测试代码为止的整个过程, 全部细致地讲解怎样去禁用 GIL 从而达成真正意义上的多线程, 并且对其速度展开测试。
安装与运行测试
安装 3.13.0:
以安装为例子,从官网上下载
运行安装,到这一步勾选
在完成安装之后, 于安装目录里进行查看, 会发现多出来一个 “.13t.exe”, 这便是那个禁用了GIL的解释器, 我们运用这个解释器去运行代码, 就能够达成真多线程的效果。
运行测试代码:
以为例,我新建一个项目

能够测量多线程程序执行时间, 我们可于测试代码里增添开始时间以及结束时间的记取, 如此一来, 我们便有可能计算出程序的总共运行时长, 并且能对禁用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个线程几乎同步执行并同时结束!
更多推荐



所有评论(0)