这篇文章主要讲解了“python的GIL是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python的GIL是什么”吧!
GIL,即全局解释器锁 ,一个被广泛吐槽的技术,即便python3.9已经到来,这个GIL依然存在,而且似乎将继续存在。
为了解决多线程之间数据完整性和状态同步的问题,引入了GIL, 它可以保证多个原生线程不会并发执行 Python 字节码。
对于GIL的理解,有一点我们必须严肃的弄清楚,GIL并不是python的特性,而是实现Python解析器(CPython,我们平时默认下载安装使用的解释器)时所引入的一个概念,这个就好比C++是一套语言标准,但可以用 GCC,INTEL C++,Visual C++ 等编译器来编译,编译出来的可执行程序也就不一样。你可以使用 CPython,PyPy , JPython 来执行python的代码,CPython里有GIL,而JPython 就没有。
Python 的维护者们不是没考虑过将GIL移除,可是已经有太多的库依赖这个特性,积重难返。
多线程原本是为了更好的利用CPU的多核资源,但是由于GIL的存在,使得同一个时刻,只能有一个python的线程在运行,显然,这是对资源的无耻浪费。
因此,你无法将python的多线程作为提升程序性能的一种手段,对于CPU密集型任务,请使用多进程。虽然如此,python的多线程也并非如大家所吐槽的那样鸡肋,对于I/O密集型任务,python多线程仍然有用武之地。
当一个线程I/O等待时,会释放GIL,这样其他线程就可以获得GIL来执行自己的任务,这就是你编写多线程爬虫加快爬取速度的技术依据。
感谢各位的阅读,以上就是“python的GIL是什么”的内容了,经过本文的学习后,相信大家对python的GIL是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。