震惊python是个“假的多线程”?!(秒懂GIL全局解释器锁)

本文解析Python多线程为何被称为“假的多线程”,重点在于GIL(全局解释器锁)的影响。Cpython的多线程由于GIL只能使用单核,适合IO密集型运算,而非并行计算。GIL的存在源于历史原因,目前虽无法彻底解决,但可以考虑使用如PyPy等替代解释器提高效率。
摘要由CSDN通过智能技术生成

前言

本来我是不打算写这个玩意的,但是在B呼(Zhi呼)上看到有人对python的运行效率和线程运行大肆鄙夷,我觉得还是有必要出来仔细的澄清一下原由,解释一下python的多线程到底是怎么一回事,为什么说他是个“假的多线程”这样做对我们的python的多线程到底有多少影响,会对我们的运行效率有多大影响。做出一个客观全面的分析,以后可以回应那些“Java吹”,“贬python”(虽然我java我也在用,而且用起来也不错对我个人的提升也比较大,但是任何一款计算机语言都不是完美的,不应该存在鄙视链,有种都给爷爬C语言爬汇编去)
先说一下结论:
我们说到python一般指的是Cpython这个是官方推荐的,网上的大部分资源都是Cpython,基于C语言做的解释器。而问题也就出现在这里。只有Cpython的多线程才是“假的多线程”,原因是由于解释器自带了一个锁叫做(GIL global interpreter lock)。但是和其他的例如Java的多线程Cpython这种多线程的区别是,python只能使用单核,也就是是假如你的CPU是多核的,但是python的多线程只能使用一个核。换句话说这种线程能够并发,但是不能并行。要想并行只能通过换解释器(Jpython,py

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Huterox

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值