信号量就是一个线程中有多个线程
# -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import threading import time semaphore = threading.BoundedSemaphore(5) #最多允许5个线程同时运行 def Run_Thread(n): semaphore.acquire() time.sleep(1) print("Run %s thread" %n) semaphore.release() for i in range(24): t = threading.Thread(target=Run_Thread,args=(i,)) t.start() while threading.active_count() != 1: pass else: print("---All Thread Have Done---")
脚本运行的情况是5个线程同时运行,最后运行剩余的4个线程
但不是按顺序规定的5个线程同时运行,而是先运行最前面的5个线程
如果这5个线程中有先运行完的,后面的线程就不上去
例如5个线程中先运行完3个线程,则后面的线程会补2个上去