第五章 爬虫进阶(十三) 2020-01-30

十三、 GIL和Lock的关系(上)

 

多线程的GIL

Python自带的解释器是Cpython。CPython解释器的多线程实际上是一个假的多线程(在多核CPU中,只能利用一核,不能利用多核)。同一时刻只有一个线程在执行,为了保证同一时刻只有一个线程在执行,在CPython解释器中有一个东西叫做GIL(Global Interpreter Lock),叫做全局解释器锁。这个解释器锁是有必要的。因为CPython解释器的内存管理不是线程安全的。当然除了CPython解释器,还有其他的解释器,有些解释器是没有GIL锁的,见下面:

1、Jython:用Java实现的Python解释器。不存在GIL锁。更多详情请见:

https://zh.wikipedia.org/wiki/Jython

2、IronPython:用.net实现的Python解释器。不存在GIL锁。更多详情请见:

https://zh.wikipedia.org/wiki/IronPython

3、PyPy:用Python实现的Python解释器。存在GIL锁。更多详情请见:

https://zh.wikipedia.org/wiki/PyPy


GIL虽然是一个假的多线程。但是在处理一些IO操作(比如文件读写和网络请求)还是可以在很大程度上提高效率的。在IO操作上建议使用多线程提高效率。在一些CPU计算机操作上不建议用多线程,而建议使用多进程。



上一篇文章 第五章 爬虫进阶(十二) 2020-01-29 地址:

https://www.jianshu.com/p/87c35f2266e0

下一篇文章 第五章 爬虫进阶(十四) 2020-01-31 地址:

https://www.jianshu.com/p/a84cfd1ec83b



以上资料内容来源网络,仅供学习交流,侵删请私信我,谢谢。

你可能感兴趣的:(第五章 爬虫进阶(十三) 2020-01-30)