理解Python GIL

By liuzhijun, 2014-02-18, 分类: 默认

根据维基百科GIL,全局解释器锁是一种机制,解释器通过这种机制(获取全局解释器锁)来限制同一个时间点只允许一个线程执行,即使是多核环境下.这样保证了多线程编

什么是GIL

根据维基百科GIL,全局解释器锁是一种机制,解释器通过这种机制(获取全局解释器锁)来限制同一个时间点只允许一个线程执行,即使是多核环境下.这样保证了多线程编程的安全.

GIL的优点

提高单线程程序的执行速度 更易于集成c扩展模块 GIL的缺点

无法充分利用多核 多进程与多线程

多线程资源共享,意味着数据的安全性遇到挑战,而多个进程之间的数据是独立的.由于多线程的资源共享就不可避免的遇到线程安全问题.即同一时刻,必须保证只有一个线程对共享资源进行修改.加锁就是一种同步机制.

细粒度锁:程序员自己控制加锁和解锁,比如java 粗粒度锁:解释器从语言层面上维护一个全局的锁机制来保证线程安全. 比如cpython 如果想充分利用多核的资源,取而代之的使用python中的多进程模块 multiproccsing.

参考:

http://www.cnblogs.com/mindsbook/archive/2009/10/15/thread-safety-and-GIL.html http://www.dabeaz.com/python/UnderstandingGIL.pdf


关注公众号「Python之禅」(id:vttalk)获取最新文章 python之禅