写过多线程程序的人肯定对各种锁很熟悉,尤其是下面这种代码 def lock_usage: lock.Lock() if(...) : lock.Unlock() return lock.Unlock() return 为了避免造成死锁,需要在每个return语句之前都释放锁.像上面的代码中,如果代码的执行路径很多,代码中就会包含大量的unlock语句,代码混乱还是小事儿,如果万一忘掉了unlock,就是个潜在的危险.除了锁之外,包括文件描述符的关闭等涉及到资源释放的操作都会有这种问题.为了解决内