日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
PythonLibrary中Condition的具體操作方案

你對Python 這一計算機語言感興趣嗎?你了解Python Library中Condition的具體實際應(yīng)用操作的具體方法嗎?假如你對Python Library的相關(guān)操作步驟感興趣的話,你可以點擊我們的文章對其進行一個更好的了解。

成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站制作、網(wǎng)站設(shè)計與策劃設(shè)計,鎮(zhèn)康網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:鎮(zhèn)康等地區(qū)。鎮(zhèn)康做網(wǎng)站價格咨詢:18980820575

Condition 算是 Lock 和 Event 的雜交版本,除了作為 Lock 的基本功能外,還提供了 wait() 和 notify() 作為線程間 "消息通知"。

 
 
 
  1. from threading import *  
  2. from time import *  
  3. condi = Condition()  
  4. def t1():  
  5. condi.acquire()  
  6. try:  
  7. for i in range(10):  
  8. print currentThread().name, i  
  9. sleep(1)  
  10. if (i == 4): condi.wait()    

# wait() 釋放鎖,并進入等待狀態(tài)。直到接收到 notify() 發(fā)送的消息后再次試圖獲取鎖,繼續(xù)后續(xù)代碼執(zhí)行。

 
 
 
  1. finally:  
  2. condi.release()  
  3. def t2():  
  4. condi.acquire()  
  5. try:  
  6. for i in range(10):  
  7. print currentThread().name, i  
  8. sleep(1)  
  9. finally:  
  10. condi.notify()   

# 在釋放鎖前通知等待的線程準備起床。

 
 
 
  1. condi.release()  
  2. Thread(target=t1).start()  
  3. Thread(target=t2).start()  

輸出:

 
 
 
  1. $ ./main.py  
  2. Thread-1 0  
  3. Thread-1 1  
  4. Thread-1 2  
  5. Thread-1 3   

Thread-1 4 <--- Thread1 釋放鎖,開始等待。Thread-2 0 <--- Thread2 獲得鎖,開始執(zhí)行。

 
 
 
  1. Thread-2 1  
  2. Thread-2 2  
  3. Thread-2 3  
  4. Thread-2 4  
  5. Thread-2 5  
  6. Thread-2 6  
  7. Thread-2 7  
  8. Thread-2 8  

Thread-2 9 <--- Thread2 發(fā)送通知,并釋放鎖。Thread-1 5 <--- Thread1 收到消息,再次拿到鎖,開始未完成的工作。

 
 
 
  1. Thread-1 6  
  2. Thread-1 7  
  3. Thread-1 8  
  4. Thread-1 9 

wait() 實際可以分解為 "condi.release(); ... acquire()" 這兩個動作。我們可以使用 Condition 包裝已有的鎖,當然也可以用 with/as 來改善我們的代碼。

 
 
 
  1. lock = RLock()  
  2. condi = Condition(lock)  
  3. def t1():  
  4. with condi:  
  5. for i in range(10):  
  6. print currentThread().name, i  
  7. sleep(1)  
  8. if (i == 4): condi.wait()  
  9. def t2():  
  10. with lock:  
  11. for i in range(10):  
  12. print currentThread().name, i  
  13. sleep(1)  
  14. condi.notify()  
  15. Thread(target=t1).start()  
  16. Thread(target=t2).start()   

注意調(diào)用 notify() 和 notifyall() 的線程必須事先獲得鎖,否則會拋出異常。


網(wǎng)站題目:PythonLibrary中Condition的具體操作方案
新聞來源:http://www.dlmjj.cn/article/ccdjjps.html