四.併發編程 (線程信號量)

一 .線程信號量(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()
相關文章
相關標籤/搜索