久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Python3中最常使用的5種線程鎖有哪幾個?

Python3中最常使用的5種線程鎖有哪幾個?

來源:千鋒教育
發(fā)布人:xqq
時間: 2023-11-05 23:31:26 1699198286

線程安全是什么意思呢?簡單來說就是當一個程序?qū)σ粋€線程安全的方法或者語句進行訪問的時候,其他人不能再對其進行操作了,必須等到這次訪問結(jié)束以后才能對這個線程安全的方法進行訪問,本篇文章總結(jié)了Python3中幾種常用的線程鎖,請看下文:

鎖是Python提供給我們能夠自行操控線程切換的權利,使用鎖可以讓線程的切換變得有序,一旦線程的切換變得有序后,各個線程之間對數(shù)據(jù)的訪問、修改就變得可控,所以如果要想保證線程安全,就必須使用鎖。

threading模塊中提供了5種最常見的鎖,下面按功能可以這么劃分:

同步鎖:lock(一次只能放行一個);

遞歸鎖:rlock(一次只能放行一個);

條件鎖:condition(一次可以放行任意個);

事件鎖:event(一次全部放行);

信號量鎖:semaphore(一次可以放行特定個);

1、Lock()同步鎖

有同步鎖和互斥鎖兩種,互斥指在同一時刻,某一資源僅能有一個訪問者訪問其,具有唯一性和排他性,但它無法限制訪問者對資源的訪問數(shù)據(jù),即訪問是無序的;而同步指在互斥的基礎上,通過其他機制實現(xiàn)訪問者對資源的有序訪問,其實它是互斥的一種更為復雜的實現(xiàn),因為它在互斥的基礎上實現(xiàn)了有序訪問的特點。

2、RLock()遞歸鎖

是同步鎖的一個升級版本,在同步鎖的基礎上可以做到連續(xù)重復使用多次acquire()后再重復使用多次release()的操作,但一定要注意加鎖次數(shù)和解鎖次數(shù)必須一致,否則容易出現(xiàn)死鎖現(xiàn)象。

3、Condition()條件鎖

條件鎖是在遞歸鎖的基礎上增加了能夠暫停線程運行的功能,并且我們可以使用wait()與notify()來控制線程執(zhí)行的個數(shù),需要注意的是,條件鎖可以自由設定一次放行幾個線程。

4、Event()事件鎖

是基于條件鎖來做的,它與條件鎖的區(qū)別在于一次只能放行全部,不能放行任意個數(shù)量的子線程繼續(xù)運行,可以將事件鎖看為紅綠燈,當紅燈時所有子線程都暫停運行,并進入等待狀態(tài),當綠燈時所有子線程都恢復正常運行。

5、Semaphore()信號量鎖

也是根據(jù)條件鎖來做的,它與條件鎖和事件鎖的區(qū)別在于:

5.1條件鎖:一次可以放行任意個處于等待狀態(tài)的線程;

5.2事件鎖:一次可以放行全部處于等待狀態(tài)的線程;

5.3信號量鎖:通過規(guī)定,成批的放行特定個處于上鎖狀態(tài)的線程。

以上內(nèi)容為大家介紹了Python3中最常使用的5種線程鎖,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構(gòu):千鋒教育。http://m.2667701.com/


tags: python培訓
聲明:本站稿件版權均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT