[Python-checkins] gh-89474: Improve Semaphore/BoundedSemaphore.release() for multiple thread waiting (GH-92447)

corona10 webhook-mailer at python.org
Sun May 8 09:34:13 EDT 2022


https://github.com/python/cpython/commit/c826867b7c1bb69639290d8df0f850ec3f9a6c72
commit: c826867b7c1bb69639290d8df0f850ec3f9a6c72
branch: main
author: Dong-hee Na <donghee.na at python.org>
committer: corona10 <donghee.na92 at gmail.com>
date: 2022-05-08T22:33:53+09:00
summary:

gh-89474: Improve Semaphore/BoundedSemaphore.release() for multiple thread waiting (GH-92447)

files:
M Lib/threading.py

diff --git a/Lib/threading.py b/Lib/threading.py
index 642f93e1eec31..40edcde11539d 100644
--- a/Lib/threading.py
+++ b/Lib/threading.py
@@ -481,8 +481,7 @@ def release(self, n=1):
             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 @@ def release(self, n=1):
             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:



More information about the Python-checkins mailing list