Python GIL

GIL是什么?


GIL(全局解释器锁)是 Global Interpreter Lock 的缩写, 其作用是, 在Python使用多线程的时候, 所有的线程去抢一个锁, 抢到了锁的线程就可以获得CPU时间。
使用GIL的主要目的是为了简化Python解释器的实现(Python中的标准库里, 如无声明, 大部分库都不是并发安全的), 而缺点就是无法充分的利用机器的多核

Python中如何使用多个CPU核心?


应为GIL的存在, 为了使用多核, 就必须摆脱 GIL 的限制, 通常有这么几种方式:

使用多进程而不是多线程:对于CPU密集型任务,可以使用multiprocessing模块创建多个进程,每个进程拥有自己的解释器和独立的GIL。

使用异步编程:对于I/O密集型任务,可以使用协程和异步编程库(如asyncio)来避免GIL的限制,因为协程在等待I/O时可以释放GIL。

需要注意的是,虽然GIL在某些情况下会限制Python多线程的性能,但对于大多数应用程序来说,并不会成为瓶颈。Python中的许多标准库和第三方库都可以通过多进程、多线程或异步编程来实现并发,并在不同的应用场景中找到合适的解决方案。


Python GIL
https://maocat.cc/2020/04/15/Python/GIL/
发布于
2020年4月15日
许可协议