Lock:
Lock锁是Python的原始锁,在锁定时不属于任何一个线程。在调用了 lock.acquire() 方法后,进入锁定状态,lock.release()方法可以解锁。底层是通过一个函数来实现的,会根据不同的操作系统选择一个最有效的版本实例
RLock:
RLock锁是一个可以被同一个线程多次 acquire 的锁,但是最后必须由获取它的线程来释放它,不论同一个线程调用了多少次的acquire,最后它都必须调用相同次数的 release 才能完全释放锁,这个时候其他的线程才能获取这个锁。RLock内部的锁的实现和Lock用的是同一个函数
总结:
是否同一线程 | 是否可重复加锁 | |
Lock | 否 | 否 |
RLock | 是 | 是 |