Python是一门解释执行的语言,拥有强大的第三方库和跨平台能力。但长期以来,Python最为人诟病的就是它有一把锁:GIL,这把锁让Python无法真正的实现多线程执行,无法利用多核CPU的高性能。(所以只有使用多进程,才能有效率利用多核的计算资源)
GIL(Global Interpreter Lock) 全局解释器锁
In short, Python 的多线程其实是顺序执行各个线程。真正并发还是要靠多进程,或者通过 Cython 调用 C/C++ 的库。
总的来说就是每个线程都需要获取 GIL 后才能执行
实际上,这个锁跟Python没有半毛钱的关系,而是负责解释执行Python的解释器:CPython的锅。
CPython是用C语言编写的Python解释器,也是最广为使用的Python解释器,一般在没有特殊说明时,说Python指的就是这个CPython解释器。
Python诞生之初,多线程技术还远没有今天这么深入人心,甚至多核CPU也是Python诞生许多年后才出现的。早期的解释器中为了支持多个线程,使用了粗暴的GIL来进行控制,方便简单的同时,也成为了CPython的巨大历史包袱。
过去二十年,曾经有许许多多大牛都尝试彻底去除GIL,但都没有完美成功。
虽然Python没能彻底去除GIL,好在,提供了其他几种方式“曲线救国”实现并发:
Python的多线程不是真的多线程(CPython的GIL全局解释器锁)
最新推荐文章于 2024-09-08 12:19:03 发布
Python的全局解释器锁(GIL)限制了多线程并行执行,使得Python在多核环境下无法充分利用计算资源。尽管存在这一局限,但Python提供了多进程和其他方式来实现并发。GIL是CPython解释器的设计,旨在早期支持多线程,但如今成为其性能提升的一大障碍。尽管尝试去除GIL的努力未果,Python社区通过多进程、Cython等工具找到了‘曲线救国’的并发策略。
摘要由CSDN通过智能技术生成