docs: def acquire(self,blocking=True,timeout=None):
          """Attempt to acquire this lock.
  
          If the optional argument "blocking" is True and "timeout" is None,
          this methods blocks until is successfully acquires the lock.  If
          "blocking" is False, it returns immediately if the lock could not
          be acquired.  Otherwise, it blocks for at most "timeout" seconds
          trying to acquire the lock.
  
          In all cases, this methods returns True if the lock was successfully
          acquired and False otherwise.
          """
          if timeout is None:
              return self.__lock.acquire(blocking)
          else:
              #  Simulated timeout using progressively longer sleeps.
              #  This is the same timeout scheme used in the stdlib Condition
              #  class.  If there's lots of contention on the lock then there's
              #  a good chance you won't get it; but then again, Python doesn't
              #  guarantee fairness anyway.  We hope that platform-specific
              #  extensions can provide a better mechanism.
              endtime = _time() + timeout
              delay = 0.0005
              while not self.__lock.acquire(False):
                  remaining = endtime - _time()
                  if remaining <= 0:
                      return False
                  delay = min(delay*2,remaining,0.05)
                  _sleep(delay)
              return True