From c826867b7c1bb69639290d8df0f850ec3f9a6c72 Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Sun, 8 May 2022 22:33:53 +0900 Subject: [PATCH] gh-89474: Improve Semaphore/BoundedSemaphore.release() for multiple thread waiting (GH-92447) --- Lib/threading.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Lib/threading.py b/Lib/threading.py index 642f93e1eec..40edcde1153 100644 --- a/Lib/threading.py +++ b/Lib/threading.py @@ -481,8 +481,7 @@ class Semaphore: raise ValueError('n must be one or more') with self._cond: self._value += n - for i in range(n): - self._cond.notify() + self._cond.notify(n) def __exit__(self, t, v, tb): self.release() @@ -506,7 +505,7 @@ class BoundedSemaphore(Semaphore): """ def __init__(self, value=1): - Semaphore.__init__(self, value) + super().__init__(value) self._initial_value = value def __repr__(self): @@ -530,8 +529,7 @@ class BoundedSemaphore(Semaphore): if self._value + n > self._initial_value: raise ValueError("Semaphore released too many times") self._value += n - for i in range(n): - self._cond.notify() + self._cond.notify(n) class Event: