国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

對python多線程中Lock()與RLock()鎖詳解

2020-02-16 00:35:42
字體:
供稿:網(wǎng)友

資源總是有限的,程序運行如果對同一個對象進行操作,則有可能造成資源的爭用,甚至導致死鎖

也可能導致讀寫混亂

鎖提供如下方法:

1.Lock.acquire([blocking])

2.Lock.release()

3.threading.Lock() 加載線程的鎖對象,是一個基本的鎖對象,一次只能一個鎖定,其余鎖請求,需等待鎖釋放后才能獲取

4.threading.RLock() 多重鎖,在同一線程中可用被多次acquire。如果使用RLock,那么acquire和release必須成對出現(xiàn),

調(diào)用了n次acquire鎖請求,則必須調(diào)用n次的release才能在線程中釋放鎖對象

例如:

無鎖:

#coding=utf8import threadingimport timenum = 0def sum_num(i):  global num  time.sleep(1)  num +=i  print numprint '%s thread start!'%(time.ctime())try:  for i in range(6):    t =threading.Thread(target=sum_num,args=(i,))    t.start()except KeyboardInterrupt,e:  print "you stop the threading"print '%s thread end!'%(time.ctime())

輸出:

Sun May 28 20:54:59 2017 thread start!Sun May 28 20:54:59 2017 thread end!01371015

結(jié)果顯示混亂

引入鎖:

#coding=utf8import threadingimport timenum = 0def sum_num(i):  lock.acquire()  global num  time.sleep(1)  num +=i  print num  lock.release()print '%s thread start!'%(time.ctime())try:  lock=threading.Lock()  list = []  for i in range(6):    t =threading.Thread(target=sum_num,args=(i,))    list.append(t)    t.start()  for threadinglist in list:    threadinglist.join()except KeyboardInterrupt,e:  print "you stop the threading"print '%s thread end!'%(time.ctime())

結(jié)果:

Sun May 28 21:15:37 2017 thread start!01361015Sun May 28 21:15:43 2017 thread end!

其中:

lock=threading.Lock()加載鎖的方法也可以換成lock=threading.RLock()

如果將上面的sum_num修改為:

  lock.acquire()  global num  lock.acquire()  time.sleep(1)  num +=i  lock.release()  print num  lock.release()

那么:

lock=threading.Lock() 加載的鎖,則一直處于等待中,鎖等待

而lock=threading.RLock() 運行正常

以上這篇對python多線程中Lock()與RLock()鎖詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持武林站長站。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 长岛县| 抚宁县| 红桥区| 勃利县| 海门市| 建德市| 曲阜市| 清丰县| 封开县| 昌江| 西畴县| 项城市| 承德市| 内江市| 岚皋县| 万安县| 呼图壁县| 民县| 荥经县| 恭城| 延庆县| 体育| 奇台县| 滦平县| 青海省| 赤峰市| 灵丘县| 灵台县| 栖霞市| 西华县| 五华县| 景德镇市| 沁阳市| 凤凰县| 衡阳市| 康保县| 北碚区| 波密县| 中超| 永清县| 宝应县|