Index: Lib/threading.py =================================================================== --- Lib/threading.py (revision 88138) +++ Lib/threading.py (working copy) @@ -350,14 +350,15 @@ __enter__ = acquire - def release(self): + def release(self, n=1): self._cond.acquire() - self._value = self._value + 1 + self._value = self._value + n if __debug__: - self._note("%s.release: success, value=%s", - self, self._value) - self._cond.notify() - self._cond.release() + self._note("%s.release: success, value=%s, times=%d", + self, self._value, n) + for i in range(n): + self._cond.notify() + self._cond.release() def __exit__(self, t, v, tb): self.release()