一 .线程信号量(Semaphore)
号量semaphore 可以控制同时运行执行的线程数量。 信号量semaphore内部维护了一个条件变量和一个计数器。
import threading,time sem=threading.Semaphore(3) # 控制线程的数量 意思三个三个线程走 def run(): with sem: for i in range(10): print(threading.current_thread().name,i) time.sleep(2) if __name__=="__main__": for i in range(5): threading.Thread(target=run).start()
from threading import Thread,Semaphore import time,os def run(i,sem): for i in range(5): sem.acquire() 表示三个人拿到钥匙了方问 print(os.getpid(),"哈哈哈哈哈哈") time.sleep(1) sem.release() 表示三个人用完钥匙还钥匙 (依次轮流) sem=Semaphore(3) # 表示控制线程在同一个时间内只能三个 ,三个线程访问 for i in range(10): p=Thread(target=run,args=(i,sem)) p.start()
原文地址:https://www.cnblogs.com/Sup-to/p/11206566.html
时间: 2024-10-05 00:28:17