1. GIL全称Global Interpreter Lock,每个线程在执行的过程都需要先获取GIL,保证同一时刻只有一个线程可以执行代码。
2.GIL的缺点
GIL使Python不能充分利用多核心CPU资源
GIL会使Python代码 不管CPU有多少个核,也不管开了多个线程,但是同一时刻只能在一个核上面执行一个线程
3.Python为什么要有GIL全局解释器锁?
锁的机制: 保证对某一个变量j进行相关的操作的时候,同一时刻只有一个线程来执行
只有拿到锁的线程,才能对变量进行相关的操作
锁从语言上区分:
细粒度的锁: 在代码中主动加的锁
粗粒度的锁: 在整个Python的解释器(cpython)的层面加的锁,所以粗粒度的解释器的锁就是GIL,多核CPU,同一时刻只能执行一个线程 ,在一定程度上保证线程的安全
4. 什么样的程序该使用进程,什么样的程序该使用线程?
计算密集型程序(非常严重的依赖CPU计算): 使用进程
IO密集型程序(查询数据库、请求网络资源、读写文件): 线程、协程