Python 執行緒條件(Condition),(執行緒等待另一個執行緒的執行)
阿新 • • 發佈:2019-02-10
執行緒1執行(cond),執行緒1執行一半等待(cond.wait()),執行緒2開始執行(cond),執行緒2執行完畢後(cond.notify()),執行緒1再接著執行。
import threading import time def go1(): with cond: #使用條件變數(資源 Lock) for i in range(8): time.sleep(1) print(threading.current_thread().name,i,"go11") if i==5: cond.wait() #等待cond.notify(),再繼續執行。(釋放條件變數(資源 Lock)) def go2(): with cond: #使用條件變數(資源 Lock) for i in range(7): time.sleep(1) print(threading.current_thread().name, i) cond.notify() #通知,觸發 cond.wait()。(釋放條件變數(資源 Lock)) cond=threading.Condition() #執行緒條件變數 threading.Thread(target=go1).start() #和下面的執行緒的次序不能調。這個執行緒先拿到cond條件變數(資源 Lock) threading.Thread(target=go2).start() #這個執行緒不會先拿到cond條件變數(資源 Lock)