码迷,mamicode.com
首页 > 编程语言 > 详细

Python如何规避全局解释器锁(GIL)带来的限制

时间:2018-11-20 13:16:57      阅读:317      评论:0      收藏:0      [点我收藏+]

标签:静态类型   静态   tar   语言   iat   jit   通过   title   官方   

 

编程语言分类概念介绍(编译型语言、解释型语言、静态类型语言、动态类型语言概念与区别)

https://www.cnblogs.com/zhoug2020/p/5972262.html

 

Python解释器

一般使用的Python解释器CPython:是用C语言实现Pyhon,是目前应用最广泛的解释器。最新的语言特性都是在这个上面先实现,基本包含了所有第三方库支持,但是CPython有几个缺陷,一是全局锁使Python在多线程效能上表现不佳,二是CPython无法支持JIT(Just-in-time compliation即时编译),导致其执行速度不及Java和Javascipt等语言。于是出现了Pypy。

Pypy:是用Python自身实现的解释器。针对CPython的缺点进行了各方面的改良,性能得到很大的提升。最重要的一点就是Pypy集成了JIT。但是,Pypy无法支持官方的C/Python API,导致无法使用例如Numpy,Scipy等重要的第三方库。(还有JPython,IronPython等)

 

全局解释器锁

全局解释器锁(Global Interpreter Lock)是Python用于同步线程的工具,使得任何时刻仅有一个线程在执行。 

 

Python GIL被动释放机制(抢占机制)

如果一个线程不间断地在 Python 2 中运行100次解释器的计步(ticks)(可以通过sys.setcheckinterval()设置计步长度),或者不间断地在 Python 3 运行15 毫秒,那么它便会放弃 GIL,而其他线程可以运行。

 

全局解释器锁带来的问题

多线程Python程序无法充分利用多个CPU核心带来的优势。

(主要影响CPU密集型程序,I/O密集型程序使用多线程一般是明智的选择)

 

Python如何规避全局解释器锁(GIL)带来的限制

标签:静态类型   静态   tar   语言   iat   jit   通过   title   官方   

原文地址:https://www.cnblogs.com/weswes/p/9987986.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!