最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中threading模塊的Lock和RLock區(qū)別詳解

 更新時(shí)間:2023年09月22日 10:03:59   作者:生有涯,知無涯  
這篇文章主要介紹了Python中threading模塊的Lock和RLock區(qū)別詳解,Lock鎖是Python的原始鎖,在鎖定時(shí)不屬于任何一個(gè)線程,在調(diào)用了 lock.acquire() 方法后,進(jìn)入鎖定狀態(tài),lock.release()方法可以解鎖,底層是通過一個(gè)函數(shù)來實(shí)現(xiàn)的,需要的朋友可以參考下

1.解釋

1.1 Lock:

Lock鎖是Python的原始鎖,在鎖定時(shí)不屬于任何一個(gè)線程。在調(diào)用了 lock.acquire() 方法后,進(jìn)入鎖定狀態(tài),lock.release()方法可以解鎖。

底層是通過一個(gè)函數(shù)來實(shí)現(xiàn)的,會(huì)根據(jù)不同的操作系統(tǒng)選擇一個(gè)最有效的版本實(shí)例

1.2 RLock:

RLock被稱為重入鎖,RLock鎖是一個(gè)可以被同一個(gè)線程多次 acquire 的鎖,但是最后必須由獲取它的線程來釋放它,不論同一個(gè)線程調(diào)用了多少次的acquire,最后它都必須調(diào)用相同次數(shù)的 release 才能完全釋放鎖,這個(gè)時(shí)候其他的線程才能獲取這個(gè)鎖。

acquire()/release() 對(duì)可以嵌套,重入鎖必須由獲取它的線程釋放。一旦線程獲得了重入鎖,同一個(gè)線程再次獲取它將不阻塞。

RLock內(nèi)部的鎖的實(shí)現(xiàn)和Lock用的是同一個(gè)函數(shù)。

是否同一線程是否可重復(fù)加鎖
Lock
RLock

2.示例

Lock在鎖定時(shí)不屬于特定線程,也就是說,Lock可以在一個(gè)線程中上鎖,在另一個(gè)線程中解鎖。

而對(duì)于RLock來說,只有當(dāng)前線程才能釋放本線程上的鎖,即 解鈴還須系鈴人 :

import threading
import time
lock = threading.Lock()
lock.acquire()
def func():
    lock.release()
    print("lock is released")
t = threading.Thread(target=func)
t.start()

輸出結(jié)果為:

lock is released

上面代碼中,在主線程中創(chuàng)建鎖,并上鎖,但是是在t線程中釋放鎖,結(jié)果正常輸出,說明一個(gè)線程上的鎖,可以由另外線程解鎖。如果把上面的鎖改為RLock則報(bào)錯(cuò)。

RLock允許在同一線程中被多次acquire。而Lock卻不允許這種情況。也就是說,下面的情況對(duì)于RLock是允許的:

import threading
rlock = threading.RLock()
def func():
    if rlock.acquire():   # 第一把鎖
        print("first lock")
        if rlock.acquire():  # 第一把鎖沒解開的情況下接著上第二把鎖
            print("second lock")
            rlock.release()  # 解開第二把鎖
        rlock.release()  # 解開第一把鎖
t = threading.Thread(target=func)
t.start()

輸出結(jié)果

 first lock
 second lock

到此這篇關(guān)于Python中threading模塊的Lock和RLock區(qū)別詳解的文章就介紹到這了,更多相關(guān)threading模塊的Lock和RLock內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python用pyinstaller封裝exe雙擊后瘋狂閃退解決辦法

    python用pyinstaller封裝exe雙擊后瘋狂閃退解決辦法

    本文主要介紹了python用pyinstaller封裝exe雙擊后瘋狂閃退解決辦法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Python實(shí)現(xiàn)博客快速備份的腳本分享

    Python實(shí)現(xiàn)博客快速備份的腳本分享

    本文針對(duì)博客園實(shí)現(xiàn)了一個(gè)自動(dòng)備份腳本,可以快速將自己的文章備份成Markdown格式的獨(dú)立文件,備份后的md文件可以直接放入到hexo博客中,感興趣的可以了解一下
    2022-09-09
  • Python中的并發(fā)處理之a(chǎn)syncio包使用的詳解

    Python中的并發(fā)處理之a(chǎn)syncio包使用的詳解

    本篇文章主要介紹了Python中的并發(fā)處理之a(chǎn)syncio包使用的詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • Python中如何獲取類屬性的列表

    Python中如何獲取類屬性的列表

    這篇文章主要給大家介紹了在Python中如何獲取類屬性的列表,文中通過示例代碼介紹的很詳細(xì),相信對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,有需要的朋友可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • Python操作csv文件之csv.writer()和csv.DictWriter()方法的基本使用

    Python操作csv文件之csv.writer()和csv.DictWriter()方法的基本使用

    csv文件是一種逗號(hào)分隔的純文本形式存儲(chǔ)的表格數(shù)據(jù),Python內(nèi)置了CSV模塊,可直接通過該模塊實(shí)現(xiàn)csv文件的讀寫操作,下面這篇文章主要給大家介紹了關(guān)于Python操作csv文件之csv.writer()和csv.DictWriter()方法的基本使用,需要的朋友可以參考下
    2022-09-09
  • python常見數(shù)制轉(zhuǎn)換實(shí)例分析

    python常見數(shù)制轉(zhuǎn)換實(shí)例分析

    這篇文章主要介紹了python常見數(shù)制轉(zhuǎn)換,實(shí)例分析了二進(jìn)制、八進(jìn)制、十進(jìn)制及十六進(jìn)制之間的相互轉(zhuǎn)換技巧,需要的朋友可以參考下
    2015-05-05
  • Django 過濾器匯總及自定義過濾器使用詳解

    Django 過濾器匯總及自定義過濾器使用詳解

    這篇文章主要介紹了Django 過濾器匯總及自定義過濾器使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python使用pil進(jìn)行圖像處理(等比例壓縮、裁剪)實(shí)例代碼

    python使用pil進(jìn)行圖像處理(等比例壓縮、裁剪)實(shí)例代碼

    這篇文章主要介紹了python使用pil進(jìn)行圖像處理(等比例壓縮、裁剪)實(shí)例代碼,首先介紹了pil的相關(guān)內(nèi)容,然后分享了實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Python圖像處理之圖像的灰度線性變換

    Python圖像處理之圖像的灰度線性變換

    這篇文章主要介紹了Python圖像處理之圖像的灰度線性變換,文章圍繞主題展開詳細(xì)的內(nèi)容戒殺,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • 20個(gè)被低估的Python性能優(yōu)化技巧分享

    20個(gè)被低估的Python性能優(yōu)化技巧分享

    這篇文章主要為大家詳細(xì)介紹了20個(gè)被低估的Python性能優(yōu)化技巧并附上了實(shí)測(cè)數(shù)據(jù),文中的示例代碼簡(jiǎn)潔易懂,有需要的小伙伴可以參考一下
    2025-03-03

最新評(píng)論

新化县| 蕲春县| 崇义县| 屯门区| 新宾| 阿拉尔市| 满城县| 迁西县| 合水县| 绥江县| 江陵县| 正定县| 麦盖提县| 嵊州市| 连南| 汪清县| 德保县| 澳门| 吉安县| 高尔夫| 团风县| 兴海县| 漳平市| 夏邑县| 中江县| 赤水市| 读书| 大石桥市| 永丰县| 灵石县| 方山县| 浮山县| 德格县| 宝山区| 将乐县| 广汉市| 海南省| 鄂州市| 大荔县| 长岛县| 比如县|