四.并发编程 (线程信号量)
Posted sup-to
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四.并发编程 (线程信号量)相关的知识,希望对你有一定的参考价值。
一 .线程信号量(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()
以上是关于四.并发编程 (线程信号量)的主要内容,如果未能解决你的问题,请参考以下文章