Python的多线程不是真的多线程(CPython的GIL全局解释器锁)

Python的全局解释器锁(GIL)限制了多线程并行执行,使得Python在多核环境下无法充分利用计算资源。尽管存在这一局限,但Python提供了多进程和其他方式来实现并发。GIL是CPython解释器的设计,旨在早期支持多线程,但如今成为其性能提升的一大障碍。尽管尝试去除GIL的努力未果,Python社区通过多进程、Cython等工具找到了‘曲线救国’的并发策略。
摘要由CSDN通过智能技术生成

      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,好在,提供了其他几种方式“曲线救国”实现并发:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值