成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python Library中Condition的具體操作方案

開發 后端
本人對Python Library這一計算機語言十分感興趣,以下的文章就是對Python Library中Condition的具體實際應用操作的介紹,和你一起分享。

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

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() 釋放鎖,并進入等待狀態。直到接收到 notify() 發送的消息后再次試圖獲取鎖,繼續后續代碼執行。

  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 獲得鎖,開始執行。

  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 發送通知,并釋放鎖。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()   

 

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

【編輯推薦】

  1. Python數組中實際應用的數據結構的操作方案
  2. Python字符串中字符的大寫與小寫的變化
  3. Python二維數組在創建過程中步驟詳解
  4. 使用Python串口時應用到的模塊有哪些
  5. 使用Python串口時應用到的模塊有哪些
責任編輯:佚名 來源: 博客園
相關推薦

2010-03-17 13:14:00

Python Libr

2010-03-24 10:06:37

Python嵌入C++

2010-05-14 14:46:38

MySQL手動安裝

2010-03-12 11:03:30

Python學習

2010-08-02 12:34:09

ADSL代理設置

2011-03-17 09:06:58

iptables映射端口

2010-03-17 12:53:43

Python Libr

2010-07-26 13:30:23

2010-08-02 17:20:12

nfs啟動Linux

2009-12-30 15:47:40

Silverlight

2010-07-15 19:46:40

關閉Telnet 23

2010-03-25 17:39:37

Python web

2009-12-31 15:36:13

SilverLight

2009-12-31 15:36:13

SilverLight

2010-02-24 13:06:27

WCF使用Nhiber

2010-03-02 09:39:11

保護WCF服務

2010-03-02 16:15:59

WCF控制事務

2010-04-01 17:25:46

Oracle死鎖進程

2010-04-02 08:42:32

Oracle 游標

2009-12-30 16:48:52

Silverlight
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产高清91 | 亚洲综合大片69999 | 欧洲精品一区 | 久久精品久久久 | 精品国产91 | 亚洲精品在线免费 | 国产精品视频一区二区三区不卡 | 日本在线免费看最新的电影 | 欧美日韩电影一区二区 | 福利视频网站 | 久久33| 国产一区二区免费在线 | 男人天堂久久 | 日韩精品视频在线 | 国产成人a亚洲精品 | 一区二区三区日本 | 亚洲草草视频 | 最新国产在线 | 中文字幕日韩欧美一区二区三区 | 亚洲一区二区三区四区五区中文 | 麻豆视频在线免费观看 | 2018天天干天天操 | 天天干夜夜操 | 欧美人人 | 国产精品免费视频一区 | 免费色网址 | 国产午夜精品一区二区三区嫩草 | 日韩电影一区 | 尤物在线| 日韩在线一区二区 | 午夜合集 | 国产精品视频网站 | 91资源在线观看 | 狠狠操你 | 久久久tv| 99精品视频在线观看 | 综合色在线 | 在线免费观看黄网 | 欧美一区二区三区在线观看 | 国产精品久久久久久久久久久久 | 久久精品国产99国产精品 |