91aaa在线国内观看,亚洲AV午夜福利精品一区二区,久久偷拍人视频,久久播这里有免费视播

<strong id="fvuar"></strong>

  • <sub id="fvuar"><dl id="fvuar"><em id="fvuar"></em></dl></sub>

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

      手機(jī)站
      千鋒教育

      千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

      千鋒教育

      掃一掃進(jìn)入千鋒手機(jī)站

      領(lǐng)取全套視頻
      千鋒教育

      關(guān)注千鋒學(xué)習(xí)站小程序
      隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

      當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > python線(xiàn)程同步(鎖)

      python線(xiàn)程同步(鎖)

      來(lái)源:千鋒教育
      發(fā)布人:xqq
      時(shí)間: 2023-11-07 18:00:23 1699351223

      多線(xiàn)程的優(yōu)勢(shì)在于可以同時(shí)運(yùn)行多個(gè)任務(wù)(至少感覺(jué)起來(lái)是這樣)。但是當(dāng)線(xiàn)程需要共享數(shù)據(jù)時(shí),可能存在數(shù)據(jù)不同步的問(wèn)題。考慮這樣一種情況:一個(gè)列表里所有元素都是0,線(xiàn)程"set"從后向前把所有元素改成1,而線(xiàn)程"print"負(fù)責(zé)從前往后讀取列表并打印。那么,可能線(xiàn)程"set"開(kāi)始改的時(shí)候,線(xiàn)程"print"便來(lái)打印列表了,輸出就成了一半0一半1,這就是數(shù)據(jù)的不同步。為了避免這種情況,引入了鎖的概念。

      鎖有兩種狀態(tài)——鎖定和未鎖定。每當(dāng)一個(gè)線(xiàn)程比如"set"要訪(fǎng)問(wèn)共享數(shù)據(jù)時(shí),必須先獲得鎖定;如果已經(jīng)有別的線(xiàn)程比如"print"獲得鎖定了,那么就讓線(xiàn)程"set"暫停,也就是同步阻塞;等到線(xiàn)程"print"訪(fǎng)問(wèn)完畢,釋放鎖以后,再讓線(xiàn)程"set"繼續(xù)。經(jīng)過(guò)這樣的處理,打印列表時(shí)要么全部輸出0,要么全部輸出1,不會(huì)再出現(xiàn)一半0一半1的尷尬場(chǎng)面。

      1.線(xiàn)程通信(條件變量)

      然而還有另外一種尷尬的情況:列表并不是一開(kāi)始就有的;而是通過(guò)線(xiàn)程"create"創(chuàng)建的。如果"set"或者"print"在"create"還沒(méi)有運(yùn)行的時(shí)候就訪(fǎng)問(wèn)列表,將會(huì)出現(xiàn)一個(gè)異常。使用鎖可以解決這個(gè)問(wèn)題,但是"set"和"print"將需要一個(gè)無(wú)限循環(huán)——他們不知道"create"什么時(shí)候會(huì)運(yùn)行,讓"create"在運(yùn)行后通知"set"和"print"顯然是一個(gè)更好的解決方案。于是,引入了條件變量。

      條件變量允許線(xiàn)程比如"set"和"print"在條件不滿(mǎn)足的時(shí)候(列表為None時(shí))等待,等到條件滿(mǎn)足的時(shí)候(列表已經(jīng)創(chuàng)建)發(fā)出一個(gè)通知,告訴"set"和"print"條件已經(jīng)有了,你們?cè)撈鸫哺苫盍?然后"set"和"print"才繼續(xù)運(yùn)行。

      2.線(xiàn)程運(yùn)行和阻塞的狀態(tài)轉(zhuǎn)換

      最后看看線(xiàn)程運(yùn)行和阻塞狀態(tài)的轉(zhuǎn)換。

      阻塞有三種情況:

      同步阻塞是指處于競(jìng)爭(zhēng)鎖定的狀態(tài),線(xiàn)程請(qǐng)求鎖定時(shí)將進(jìn)入這個(gè)狀態(tài),一旦成功獲得鎖定又恢復(fù)到運(yùn)行狀態(tài);

      等待阻塞是指等待其他線(xiàn)程通知的狀態(tài),線(xiàn)程獲得條件鎖定后,調(diào)用“等待”將進(jìn)入這個(gè)狀態(tài),一旦其他線(xiàn)程發(fā)出通知,線(xiàn)程將進(jìn)入同步阻塞狀態(tài),再次競(jìng)爭(zhēng)條件鎖定;

      而其他阻塞是指調(diào)用time.sleep()、anotherthread.join()或等待IO時(shí)的阻塞,這個(gè)狀態(tài)下線(xiàn)程不會(huì)釋放已獲得的鎖定。

      以上內(nèi)容為大家介紹了python線(xiàn)程同步(鎖),希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。

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

      python的os模塊提供了幫你執(zhí)行文件處理操作的方法,比如重命名和刪除文件。要使用這個(gè)模塊,你必須先導(dǎo)入它,然后才可以調(diào)用相關(guān)的各種功能。re...詳情>>

      2023-11-07 20:49:35
      python 序列化及其相關(guān)模塊

      什么是序列化對(duì)象?我們把對(duì)象(變量)從內(nèi)存中編程可存儲(chǔ)或傳輸?shù)倪^(guò)程稱(chēng)之為序列化,在python中稱(chēng)為pickle,其他語(yǔ)言稱(chēng)之為serialization,marshal...詳情>>

      2023-11-07 20:42:23
      python生成器函數(shù)

      為什么叫生成器函數(shù)?因?yàn)樗S著時(shí)間的推移生成了一個(gè)數(shù)值隊(duì)列。一般的函數(shù)在執(zhí)行完畢之后會(huì)返回一個(gè)值然后退出,但是生成器函數(shù)會(huì)自動(dòng)掛起,然...詳情>>

      2023-11-07 20:31:35
      python 字典操作方法詳解

      字典是一種通過(guò)名字或者關(guān)鍵字引用的得數(shù)據(jù)結(jié)構(gòu),key類(lèi)型需要時(shí)被哈希,其鍵可以是數(shù)字、字符串、元組,這種結(jié)構(gòu)類(lèi)型也稱(chēng)之為映射。字典類(lèi)型是P...詳情>>

      2023-11-07 20:09:59
      python 集合操作方法詳解

      集合set集合用于包含一組無(wú)序的對(duì)象。與列表和元組不同,集合是無(wú)序的,也無(wú)法通過(guò)數(shù)字進(jìn)行索引。此外,集合中的元素不能重復(fù)。set和dict一樣,...詳情>>

      2023-11-07 20:06:23