GIL--全局解释器锁
1. python增加GIL的原因:
cpython解释器的内存管理并不是线程安全的
保护多线程下对python对象的访问
cpython使用简单的锁机制避免多个线程同时执行字节码
2. 影响:
同一时间只有一个线程执行字节码
CPU密集程序难以使用多核的优势
IO期间会释放GIL的,对IO密集程序影响不大
3. 如何规避影响
CPU密集使用多进程+进程池
IO密集使用线程//协程
4.有GIL,为何还要关注线程安全
原子操作:一个指令如果是一个字节码可以完成就是原子的,原子操作是可以保证线程安全的;
大部分业务代码均是非原子操作,所以访问同一对象时,在多线程中依旧不是线程安全的;