好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 詳解Python中的Lock和Rlock

詳解Python中的Lock和Rlock

熱門標簽:天津塘沽區(qū)地圖標注 如何申請400電話代理 地圖標注可以遠程操作嗎 智能電話機器人調研 甘肅高頻外呼系統(tǒng) 滴滴地圖標注公司 400電話在線如何申請 杭州房產地圖標注 江門智能電話機器人

線程是進程中可以調度執(zhí)行的實體。而且,它是操作系統(tǒng)中可以執(zhí)行的最小處理單元。簡單地說,一個線程就是一個程序中可以獨立于其他代碼執(zhí)行的指令序列。為了簡單起見,你可以假設線程只是進程的子集!

Locks

鎖是Python中用于同步的最簡單的方式。鎖有兩種狀態(tài):上鎖、釋放鎖。

鎖是線程模塊中的一個類,有兩個主要方法:acquire()和release() 當調用acquire()方法時,它鎖定鎖的執(zhí)行并阻塞鎖的執(zhí)行,直到其他線程調用release()方法將其設置為解鎖狀態(tài)。鎖幫助我們有效地訪問程序中的共享資源,以防止數據損壞,它遵循互斥,因為一次只能有一個線程訪問特定的資源。

讓我們看看下面的例子來理解鎖的使用:

import threading
 
#創(chuàng)建一個lock對象
lock = threading.Lock()
 
#初始化共享資源
abce = 0
 
def sumOne():
    global abce
 
    #鎖定共享資源
    lock.acquire()
    abce = abce + 1
 
    #釋放共享資源
    lock.release()
 
def sumTwo():
    global abce
 
    #鎖定共享資源
    lock.acquire()
    abce = abce + 2
 
    #釋放共享資源
    lock.release()
 
#調用函數
 
sumOne()
sumTwo()
print(abce)

在上面的程序中,lock是一個鎖對象,全局變量abce是一個共享資源,sumOne()和sumTwo()函數扮作兩個線程,在sumOne()函數中共享資源abce首先被鎖定,然后增加了1,然后abce被釋放。sumTwo()函數執(zhí)行類似操作。 兩個函數sumOne()和sumTwo()不能同時訪問共享資源abce,一次只能一個訪問共享資源。

RLocks

默認的lock不能識別lock當前被哪個線程持有。如果任何線程正在訪問共享資源,那么試圖訪問共享資源的其他線程將被阻塞,即使鎖定共享資源的線程也是如此。 在這些情況下,可重入鎖(或RLock)用于防止訪問共享資源時出現不必要的阻塞。如果共享資源在RLock中,那么可以安全地再次調用它。 RLocked資源可以被不同的線程重復訪問,即使它在被不同的線程調用時仍然可以正常工作。

讓我們看看下面的例子來理解RLocks的使用:

import threading
 
#創(chuàng)建一個lock對象
lock = threading.Lock()
 
#初始化共享資源
abce = 0
 
#本線程訪問共享資源
lock.acquire()
abce = abce + 1
 
#這個線程訪問共享資源會被阻塞
lock.acquire()
abce = abce + 2
lock.release()
 
print(abce)

在上面的程序中,兩個線程同時嘗試訪問共享資源abce,這里當一個線程當前正在訪問共享資源abce時,另一個線程將被阻止訪問它。 當兩個或多個線程試圖訪問相同的資源時,有效地阻止了彼此訪問該資源,這就是所謂的死鎖,因此上述程序沒有生成任何輸出。

但是,在程序中上述問題可以通過使用RLock來解決。

import threading
 
#創(chuàng)建一個rlock對象
lock = threading.RLock()
 
#初始化共享資源
abce = 0
 
#本線程訪問共享資源
lock.acquire()
abce = abce + 1
 
#這個線程嘗試訪問共享資源
lock.acquire()
abce = abce + 2
lock.release()
 
print(abce)

在這里,沒有阻止程序中的線程訪問共享資源abce。 對于RLock對象鎖的每個acquire(),我們需要調用release()一次。

從上面提到的眾多程序和解釋中,在Python中一個Lock對象和一個RLock對象有很多區(qū)別:

locks rlocks
lock對象無法再被其他線程獲取,除非持有線程釋放 rlock對象可以被其他線程多次獲取
lock對象可被任何線程釋放 rlock對象只能被持有的線程釋放
lock對象不可以被任何線程擁有 rlock對象可以被多個線程擁有
對一個對象鎖定是很快的 對一個對象加rlock比加lock慢

以上就是詳解Python中的Lock和Rlock的詳細內容,更多關于Python中Lock和Rlock的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • 對python多線程中Lock()與RLock()鎖詳解
  • Python多線程編程(六):可重入鎖RLock
  • Python多線程同步Lock、RLock、Semaphore、Event實例

標簽:重慶 長春 臨汾 河池 廊坊 德宏 東莞 漢中

巨人網絡通訊聲明:本文標題《詳解Python中的Lock和Rlock》,本文關鍵詞  詳解,Python,中的,Lock,和,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解Python中的Lock和Rlock》相關的同類信息!
  • 本頁收集關于詳解Python中的Lock和Rlock的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 无人高清视频完整版在线观看免费| 任你躁在线精品免费| 国产精品秘?吴梦梦| 国产成a人片在线观看视频99| 衡阳市| 日本一区不卡视频| 国产学生初高中女91| 一本东京热高潮熟女精品| 97夜色爽爽影院在线观看| 成人公开免费视频| 黄色片啪啪| 不许穿衣服露出调教h| 第一次做爰的视频全过程| 怡红院一区二区三区| 4hu最新地域网名2021| 三上悠亚厨房被C高潮电影| 国产精品无码亚洲专区| 六月丁香婷婷激情国产| 开小嫩苞尝遍山村女人香山村刘伟 | 中国人妻无套进入白浆BD| 透明三角女裤头图片| 微信附近人300元| 夜夜躁爽日日躁狠狠躁视频 | 国模冰莲自慰极品美胞| chinese高中生勃起gay| 欧美肥bb| 顶开alpha的生殖腔| 丰满多水的寡妇A片| 美女被?脱脱内色视频| 国产精品无码一区二区在线观| 69p69国产精品| 视频网站免费观看| 霸道总裁肉文| 男男屁股眼灌尿| 美国式禁忌1~4伦理| 性生活电影| 警花喷奶水h文| 毛片特级| 欧美成人激情视频| 久久精品成人免费看| 亚洲精品久久久久久下一站蒲公英|