不释放Python中的锁定条件实现

不释放Python中的锁定条件实现,python,garbage-collection,conditional-statements,Python,Garbage Collection,Conditional Statements,我有一个关于条件的问题。等等()。以下是我在threading.py中第339行阅读的源代码: def wait(self, timeout=None): ... if not self._is_owned(): raise RuntimeError("cannot wait on un-acquired lock") waiter = _allocate_lock() waiter.acquire() self.__waiters

我有一个关于条件的问题。等等()。以下是我在threading.py中第339行阅读的源代码:

    def wait(self, timeout=None):
    ...
    if not self._is_owned():
        raise RuntimeError("cannot wait on un-acquired lock")
    waiter = _allocate_lock()
    waiter.acquire()
    self.__waiters.append(waiter)
    saved_state = self._release_save()
    try:  
        if timeout is None:
            waiter.acquire()    # my question here
    ...

我发现它只是获取了锁,而没有在以后调用water上的release(),所以它只是让pythongc销毁water吗?好吗?

是,对于该特定情况-
water.acquire()
在指定了no
timeout
时被调用-
water
对象将在
wait
退出时退出作用域
waiter
self中删除。u waiters
notify
调用中,调用
waiter.acquire()
停止阻塞需要该调用,因此会有对对象的引用以使其保持活动状态。因为当
wait
完成时没有幸存的引用,所以整个对象将被垃圾收集器破坏,这意味着没有理由显式释放锁