<p id="35FB3DG3"><strong>OSCHINA</strong></p><p id="35FB3DGA"><strong>[AI评选 投票有奖]</strong></p><p id="35FB3DGB">Python 3.13 引入了新的实验性,旨在通过移除全局解释器锁 (GIL) 来提升 Python 性能,尤其是在多线程应用程序中。</p><p id="35FB3DGC">近日,开发者使用 Python 3.12、3.13 和支持自由线程的 3.13(3.13t)运行了基准测试,包括使用和不使用 GIL(同时运行支持和不支持自由线程的 3.13 版),以测试不同场景下「自由线程」对性能的影响。</p><p id="35FB3DGD">这名开发者通过 PageRank 算法的实现,比较了单线程、多线程和多进程模型的性能,并使用 CodSpeed 工具进行了性能测试。</p><p id="35FB3DGE">结果显示,<strong>禁用 GIL 后,多线程模型性能**,但自由线程模式由于需要禁用自适应解释器而整体性能下降。</strong></p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F1108%2Fd34882fej00smmi6p00dfd200u000f0g00id0096.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="35FB3DGG">以下是此次性能测试的关键点总结:</p><p><ul><li id="35FB3DI2"></p><p id="35FB3DGH"><strong>GIL 及其局限性</strong>:CPython 中的 GIL 通过只允许一个线程在任何给定时间持有 Python 解释器的控制权来限制真正的并行性。这导致了多线程 CPU 密集型应用程序的瓶颈。</p><p></li><li id="35FB3DI3"></p><p id="35FB3DGI"><strong>自由线程 (no-GIL) 模式</strong>:Python 3.13 引入了一个没有 GIL 的实验性构建,允许多个线程真正并发地执行 Python 字节码。这有可能显著提高多核系统上 CPU 密集型任务的性能。</p><p></li><li id="35FB3DI4"></p><p id="35FB3DGJ"><strong>性能改进</strong>:早期基准测试表明性能有所提升,尤其是在 I/O 密集型操作和特定场景中。但是,整体性能影响仍在评估中,预计在未来版本中会有所改进。</p><p></li><li id="35FB3DI5"></p><p id="35FB3DGK"><strong>兼容性问题</strong>:移除 GIL 会引入重大的兼容性挑战。许多 C 扩展和库依赖 GIL 来保证线程安全。使它们适应 no-GIL 的世界是一项艰巨的任务。</p><p></li><li id="35FB3DI6"></p><p id="35FB3DGL"><strong>实验状态</strong>:Python 3.13 中的 no-GIL 构建明确处于实验阶段。它尚未准备好用于生产环境,并且可能会发生变化。目标是收集反馈并在后续版本中改进实现。</p><p></li></ul></p><p id="35FB3DGM"><strong>测试结果</strong></p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F1108%2Fb1afee76j00smmi6q001fd200u000gsg00id00a9.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p id="35FB3DGO"><strong>数据分析</strong></p><p><ul><li id="35FB3DI7"></p><p id="35FB3DGP"><strong>单线程:</strong>作为基准,单线程执行时间被设为 1 个单位时间。</p><p></li><li id="35FB3DI8"></p><p id="35FB3DGQ"><strong>多线程 (GIL):</strong>在 4 核机器上使用标准的多线程(受 GIL 限制),PageRank 算法的执行时间为 1.05 个单位时间,比单线程略慢。这表明 GIL 阻碍了并行执行,甚至引入了额外的开销。</p><p></li><li id="35FB3DI9"></p><p id="35FB3DGR"><strong>多进程:</strong>使用多进程,执行时间为 0.35 个单位时间,实现了约 3 倍的加速。这是因为多进程绕过了 GIL 的限制,实现了真正的并行计算。</p><p></li><li id="35FB3DIA"></p><p id="35FB3DGS"><strong>自由线程 (no-GIL):</strong>使用自由线程,执行时间为 0.4 个单位时间,也实现了显著的加速,与多进程方法接近。这表明移除 GIL 可以有效提高多线程程序的性能。</p><p></li></ul></p><p id="35FB3DGU"><strong>相关来源</strong></p><p id="35FB3DGV">https://codspeed.io/blog/state-of-python-3-13-performance-free-threading</p><p id="35FB3DHV"><strong>↓分享</strong><strong>、在看</strong><strong>与点赞~Orz</strong></p>
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/174604.html