日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

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

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

成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),鎮(zhèn)康網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:鎮(zhèn)康等地區(qū)。鎮(zhèn)康做網(wǎng)站價(jià)格咨詢: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() 釋放鎖,并進(jìn)入等待狀態(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()   

# 在釋放鎖前通知等待的線程準(zhǔn)備起床。

 
 
 
  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 釋放鎖,開(kāi)始等待。Thread-2 0 <--- Thread2 獲得鎖,開(kāi)始執(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 收到消息,再次拿到鎖,開(kāi)始未完成的工作。

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

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

 
 
 
  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() 的線程必須事先獲得鎖,否則會(huì)拋出異常。


名稱欄目:PythonLibrary中Condition的具體操作方案
網(wǎng)頁(yè)路徑:http://m.5511xx.com/article/ccdjjps.html