亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-09-20 01:36:17 來源:腳本之家 閱讀:167 作者:comprel 欄目:開發技術

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

也可能導致讀寫混亂

鎖提供如下方法:

1.Lock.acquire([blocking])

2.Lock.release()

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

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

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

例如:

無鎖:

#coding=utf8
import threading
import time

num = 0

def sum_num(i):
  global num
  time.sleep(1)
  num +=i
  print num

print '%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!
01
3
710
15

結果顯示混亂

引入鎖:

#coding=utf8
import threading
import time

num = 0

def 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())

結果:

Sun May 28 21:15:37 2017 thread start!
0
1
3
6
10
15
Sun 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()鎖詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新昌县| 屏山县| 永定县| 黔江区| 遂宁市| 周宁县| 繁昌县| 芜湖市| 合肥市| 洛南县| 崇阳县| 馆陶县| 白水县| 依兰县| 赤水市| 济南市| 哈密市| 额尔古纳市| 屏东市| 湘潭县| 楚雄市| 聂荣县| 新巴尔虎左旗| 城步| 精河县| 禄劝| 金昌市| 大同市| 沅江市| 毕节市| 榆林市| 峨眉山市| 凤冈县| 嵊泗县| 河津市| 孝义市| 哈密市| 长沙市| 大港区| 达州市| 沧州市|