Skip to content

Latest commit

 

History

History
6 lines (3 loc) · 1.29 KB

小心Python GIL.md

File metadata and controls

6 lines (3 loc) · 1.29 KB

##小心Python GIL

GIL是一种用于实现标准Python(也被称为CPython)的一种机制,是为了避免不同的线程同时执行字节码。在这门语言的使用者中,GIL存在的原因被激烈的讨论着。GIL被用于保护被CPython解释器使用的内存储器,因为CPython解析器并未实现为线程的并发访问的同步机制。在任何情况下,当我们决定使用线程时,GIL将会导致一个问题,这些往往是CPU受限。比如说,I/O Threads超出了GIL的范围。也许GIL机在Python的演变过程中带来的好处要多于坏处。显然,我们不能仅仅将效率作为评判一个事情是好是坏的唯一的标准。

很多情况下,使用多进程配合消息传递能更好的平衡可维护性、可扩展性以及性能之间的关系。然而,在某些情况下即使由于GIL的存在会降低效率也还是会需要线程。这时,所能做的就是写一些代码片段作为C语言的扩展,并且把它们嵌入到Python程序中。因此也是有替代品的,这应由开发人员分析真正的需求。那么问题来了,GIL一般来说是一个恶棍吗?重要的是要记住,PyPy团队正致力于将GIL从Python中移除的STM的实现。想了解有关此项目的更多细节,请访问http://pypy.org/tmdonate.html.