class threading.Semaphore(value=1)
This class implements semaphore objects. A semaphore manages a counter representing the number of release()
calls minus the number of acquire()
calls, plus an initial value. The acquire()
method blocks if necessary until it can return without making the counter negative. If not given, value defaults to 1.
The optional argument gives the initial value for the internal counter; it defaults to 1
. If the value given is less than 0, ValueError
is raised.
Changed in version 3.3: changed from a factory function to a class.
-
acquire(blocking=True, timeout=None)
-
Acquire a semaphore.
When invoked without arguments: if the internal counter is larger than zero on entry, decrement it by one and return immediately. If it is zero on entry, block, waiting until some other thread has called
release()
to make it larger than zero. This is done with proper interlocking so that if multipleacquire()
calls are blocked,release()
will wake exactly one of them up. The implementation may pick one at random, so the order in which blocked threads are awakened should not be relied on. Returns true (or blocks indefinitely).When invoked with blocking set to false, do not block. If a call without an argument would block, return false immediately; otherwise, do the same thing as when called without arguments, and return true.
When invoked with a timeout other than None, it will block for at most timeout seconds. If acquire does not complete successfully in that interval, return false. Return true otherwise.
Changed in version 3.2: The timeout parameter is new.
-
release()
-
Release a semaphore, incrementing the internal counter by one. When it was zero on entry and another thread is waiting for it to become larger than zero again, wake up that thread.
Please login to continue.