首页 > 其他 > 详细

GIL(全局解释器锁)

时间:2019-09-11 21:47:35      阅读:64      评论:0      收藏:0      [点我收藏+]

在了解之前要先了解一下下面几个问题:

1、GIL的概念

2、对python线程中的影响

3、利用多线程是不是比单线程抓取速度有提升,解释原因

对于这几个问题,我按照我的理解去回答:

对于GIL而言与python没有半毛钱的关系,GIL的出现仅仅在于在cpython(用c语言写的解释器)在执行的时候遗留下来的问题,在同一时刻,只能执行一个线程。(其实吧,也就是在很早很早之前,设计出来python语言的人,当时没有想到以后的cpu会出现多核,导致当时写解释器的时候没有考虑到,当发现问题的时候,曾试着对解释器进行升级,但效率不如带着GIL的速度快,然后就保留了下来)至于如何解释GIL的情况:在io(读写)操作时,对于要读或者写的文件是非常大的,并且在读或者写的时候会出现一定时间的间隔,所以这个时候GIL会对此操作有一定的限制作用。

介绍两种读取类型:

计算密集型——————一般采取多进程进行编码——————此时多核在运行,可以实现并行

io密集型————————一般采用多线程或者协程(利用gevent)来编码    ————此时只有一个核在工作,实现并发

python解释器,有很多的”版本“,有用c写的解释器,也有java写的解释器,一般只有c写的解释器才会存在GIL,所以想要避免遇到GIL可以使用其他程序写的解释器,当然也可以使用其他代码来实现某些功能。

python是解释型语言,又称为胶水语言,他可以调用其他语言写的代码,并且可以运行。

 

GIL(全局解释器锁)

原文:https://www.cnblogs.com/tendresse/p/11508878.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!