Slide 6
Slide 6 text
Semaphore と BoundedSemaphore
- Semaphore
- BoundedSemaphore
- 有限セマフォとも
sem = threading.BoundedSemaphore(1)
print(sem._value) # 1
sem.acquire() # Trueを返す
print(sem._value) # 0
sem.acquire(timeout=5) # 5秒経過後にFalseを返す
sem.release()
print(sem._value) # 1
sem.release()
Traceback (most recent call last):
File "", line 1, in
File "/ (省略) /threading.py", line 504, in
release
raise ValueError("Semaphore released too
many times")
ValueError: Semaphore released too many
times
下限値に加えて上限値もある。
“解放”し過ぎないようにしたい時に使う