成人免费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-24 10:06:37

Python嵌入C++

2010-03-12 11:03:30

Python學習

2010-03-17 13:14:00

Python Libr

2010-05-14 14:46:38

MySQL手動安裝

2010-07-26 13:30:23

2010-08-02 17:20:12

nfs啟動Linux

2010-08-02 12:34:09

ADSL代理設置

2009-12-30 15:47:40

Silverlight

2010-03-17 12:53:43

Python Libr

2011-03-17 09:06:58

iptables映射端口

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-04-01 17:25:46

Oracle死鎖進程

2010-04-02 08:42:32

Oracle 游標

2009-12-30 16:48:52

Silverlight

2010-05-27 14:29:53

Linux查看進程

2009-12-09 09:28:12

配置靜態路由

2010-02-24 13:06:27

WCF使用Nhiber
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天精品综合 | 成人18亚洲xxoo | 色在线免费视频 | 99热热| 欧美成年黄网站色视频 | 亚洲精品一区二区 | 日韩欧美大片 | 亚洲欧美第一视频 | 国产高清一区二区三区 | 亚洲乱码国产乱码精品精98午夜 | 久久久精 | 一级全黄视频 | 粉嫩一区二区三区性色av | www.婷婷 | 日韩久久久久 | 久久久一区二区 | 国产丝袜人妖cd露出 | 国产午夜精品一区二区三区在线观看 | 九九热re| 久久久人成影片一区二区三区 | 日韩高清国产一区在线 | 一区二区三区中文 | 请别相信他免费喜剧电影在线观看 | 欧美综合一区二区三区 | 亚洲二区在线 | 亚洲成人免费视频在线 | 欧美日韩国产三级 | 91久操网| 欧美综合在线视频 | 色婷婷亚洲国产女人的天堂 | 久久精品aaa | 玖玖国产精品视频 | 国产日韩欧美在线播放 | 久久噜| 91精品国产乱码久久久 | av在线伊人 | 亚洲性综合网 | 水蜜桃亚洲一二三四在线 | 免费视频一区二区三区在线观看 | 免费国产一区二区 | 成人影院在线观看 |