就是同时有几个线程可以被执行:
import threading
import time
def run(n):
global num
semaphore.acquire() #类似一个锁
time.sleep(1)
num += 1
print('run the thread:%s'%n)
semaphore.release()
if __name__ == "__main__":
num = 0
semaphore = threading.BoundedSemaphore(5) #最多允许5个线程同时运行
# 这时候就像是线程池每次只有五个同时运行
# 但实际上是每出来一个放进去一个
for i in range(20):
t = threading.Thread(target=run,args=(i,))
t.start()
while threading.active_count() != 1:
pass
else:
print('----all threading done')
print(num)