python 锁的作用及分类
锁就是 python 提供的对线程控制的对象
- 死锁:死锁就是若干的子线程在系统资源竞争时,都在等待对方先释放自己所需要的资源,结果谁也不先解锁,互相干等着,导致程序无法执行下去,这就是死锁。
- 互斥锁:因为同一进程中所有线程的是数据共享的,可能就会发生一个线程操作一个资源尚未结束时,另外一个线程已经对其进行了修改,导致最终结果出现错误,此时就需要对被操作对象添加互斥锁。保证每个线程对该资源的操作都能得到正确的结果。
- GIL锁:GIL 锁即全局解释器锁,只在 cpython 里才有,它限制了多个线程同时执行,保证在于同一时间内只能有一个线程可以执行,所以 cpython 里的多线程其实是伪多线程。在 python 里常使用协程来代替线程,协程是一种更轻量级的线程。