10.信号量
信号量是一种并行的锁,每新建一个信号量,并行的锁数目加一。建立信号量后,每程序中同时只能有与信号量相同数目的线程可以执行,一个信号量只能进入一个线程。
因此设置信号量数目后,能够一起运行的线程与信号量数目相同。信号量中前面线程都结束以后,后面的线程才能进入信号量中,
会造成一种信号量中的线程是同时运行的,实际上他们的运行也分先后顺序
信号量可用来限制同一时间有多少线程来访问数据库
class myThread(threading.Thread): def run(self): semaphore.acquire() #开始加锁 print(self.name) time.sleep(3) semaphore.release() #释放信号量 if __name__=='__main__': semaphore=threading.BoundedSemaphore(5) #设置信号量的数目 thrs=[] for i in range(100): #同时创建了100个进程,但是因为设置了信号量为5,只能同时执行5个线程,前5个执行完毕后,再执行下5个 thrs.append(myThread()) for i in thrs: i.start()

浙公网安备 33010602011771号