并发:进行交替处理多件事情。
并行:多个cpu同时处理多个事,只在多核上能实现。
GIL是全局解析器锁,保证同一时刻只有一个线程可以使用cpu,让我们的多线程没办法真正实现并行。
在一个进程中只有一个GIL锁,那个线程拿到GIL就可以使用cpu
多个进程有多个GIL锁
什么时候会释放GIL锁?
1 、遇到像 i/o操作这种会有时间空闲造成cpu闲置的情况会释放GIL。
2 、会有一个专门ticks进行计数,一旦ticks数值达到100,这个时候释放GIL锁,线程之间开始竞争GIL锁(说明:ticks这个数值可以进行设置来延长或者缩减获得GIL锁的线程使用cpu的时间)。
互斥锁和GIL锁的关系
GIL锁 : 保证同一时刻只有一个线程能使用到cpu。
互斥锁 : 多线程时,保证修改共享数据时有序的修改,不会产生数据修改混乱。