信号量相当于一个锁锁着的房间里的多个床位,同一时间可以有多个线程获得信号量,而锁则只能被一个线程获得。
import threading import time semaphore = threading.Semaphore(3) def func(): if semaphore.acquire(): # acquire和release方法同锁的方法,不同在于可以控制多个线程得到该semaphore print (threading.currentThread().getName() + ' get semaphore') time.sleep(1) semaphore.release() for i in range(10): t1 = threading.Thread(target=func) t1.start()