'Wake up one or more threads waiting on this condition, if any.
If the calling thread has not acquired the lock when this method is
called, a RuntimeError is raised.
This method wakes up at most n of the threads waiting for the condition
variable; it is a no-op if no threads are waiting.'

def notify(self, n=1):

    if (not self._is_owned()):
        raise RuntimeError('cannot    notify    on    un-acquired    lock')
    __waiters = self.__waiters
    waiters = __waiters[:n]
    if (not waiters):
        if __debug__:
            self._note('%s.notify():    no    waiters', self)
        return
    self._note('%s.notify():    notifying    %d    waiter%s', self, n, (((n != 1) and 's') or ''))
    for waiter in waiters:
        waiter.release()
        try:
            __waiters.remove(waiter)
        except ValueError:
            pass
