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

關于Python中的同步異步阻塞與非阻塞

 更新時間:2023年03月28日 14:36:28   作者:Python?學習者  
這篇文章主要介紹了關于Python中的同步異步阻塞與非阻塞,具有一定的參考價值,有需要的朋友可以看一下

一、狀態(tài)介紹

在了解其他概念之前,我們首先要了解進程的幾個狀態(tài)。在程序運行的過程中,由于被操作系統(tǒng)的調度算法控制,程序會進入幾個狀態(tài):就緒,運行和阻塞。

  • 就緒(Ready)狀態(tài):當進程已分配到除CPU以外的所有必要的資源,只要獲得處理機便可立即執(zhí)行,這時的進程狀態(tài)稱為就緒狀態(tài)。
  • 執(zhí)行/運行(Running)狀態(tài)當進程已獲得處理機,其程序正在處理機上執(zhí)行,此時的進程狀態(tài)稱為執(zhí)行狀態(tài)。
  • 阻塞(Blocked)狀態(tài)正在執(zhí)行的進程,由于等待某個事件發(fā)生而無法執(zhí)行時,便放棄處理機而處于阻塞狀態(tài)。引起進程阻塞的事件可有多種,例如,等待I/O完成、申請緩沖區(qū)不能滿足、等待信件(信號)等。

二、同步和異步

所謂異步是不需要等待被依賴的任務完成,只是通知被依賴的任務要完成什么工作,依賴的任務也立即執(zhí)行,只要自己完成了整個任務就算完成了。至于被依賴的任務最終是否真正完成,依賴它的任務無法確定,所以它是不可靠的任務序列。

例子

  • 第一種 :選擇排隊等候;
  • 第二種 :選擇取一個小紙條上面有我的號碼,等到排到我這一號時由柜臺的人通知我輪到我去辦理業(yè)務了;

第一種:前者(排隊等候)就是同步等待消息通知,也就是我要一直在等待銀行辦理業(yè)務情況;

第二種:后者(等待別人通知)就是異步等待消息通知。在異步消息處理中,等待消息通知者(在這個例子中就是等待辦理業(yè)務的人)往往注冊一個回調機制,在所等待的事件被觸發(fā)時由觸發(fā)機制(在這里是柜臺的人)通過某種機制(在這里是寫在小紙條上的號碼,喊號)找到等待該事件的人。

三、阻塞和非阻塞

例子

繼續(xù)上面的那個例子,不論是排隊還是使用號碼等待通知,如果在這個等待的過程中,等待者除了等待消息通知之外不能做其它的事情,那么該機制就是阻塞的,表現(xiàn)在程序中,也就是該程序一直阻塞在該函數(shù)調用處不能繼續(xù)往下執(zhí)行。

相反,有的人喜歡在銀行辦理這些業(yè)務的時候一邊打打電話發(fā)發(fā)短信一邊等待,這樣的狀態(tài)就是非阻塞的,因為他(等待者)沒有阻塞在這個消息通知上,而是一邊做自己的事情一邊等待。

注意:同步非阻塞形式實際上是效率低下的,想象一下你一邊打著電話一邊還需要抬頭看到底隊伍排到你了沒有。如果把打電話和觀察排隊的位置看成是程序的兩個操作的話,這個程序需要在這兩種不同的行為之間來回的切換,效率可想而知是低下的;而異步非阻塞形式卻沒有這樣的問題,因為打電話是你(等待者)的事情,而通知你則是柜臺(消息觸發(fā)機制)的事情,程序沒有在兩種不同的操作中來回切換。

四、同步/異步和阻塞/非阻塞

1.異步阻塞形式

如果在銀行等待辦理業(yè)務的人采用的是異步的方式去等待消息被觸發(fā)(通知),也就是領了一張小紙條,假如在這段時間里他不能離開銀行做其它的事情,那么很顯然,這個人被阻塞在了這個等待的操作上面。

異步操作是可以被阻塞住的,只不過它不是在處理消息時阻塞,而是在等待消息通知時被阻塞。

2.同步非阻塞形式

想象一下你一邊打著電話一邊還需要抬頭看到底隊伍排到你了沒有,如果把打電話和觀察排隊的位置看成是程序的兩個操作的話,這個程序需要在這兩種不同的行為之間來回的切換,效率可想而知是低下的。

3.異步非阻塞形式

因為打電話是你(等待者)的事情,而通知你則是柜臺(消息觸發(fā)機制)的事情,程序沒有在兩種不同的操作中來回切換。

比如說,這個人突然發(fā)覺自己煙癮犯了,需要出去抽根煙,于是他告訴大堂經(jīng)理說,排到我這個號碼的時候麻煩到外面通知我一下,那么他就沒有被阻塞在這個等待的操作上面,自然這個就是異步+非阻塞的方式了。

總結

很多人會把同步和阻塞混淆,是因為很多時候同步操作會以阻塞的形式表現(xiàn)出來,同樣的,很多人也會把異步和非阻塞混淆,因為異步操作一般都不會在真正的IO操作處被阻塞。

到此這篇關于關于Python中的同步異步阻塞與非阻塞的文章就介紹到這了,更多相關Python同步異步阻塞與非阻塞內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

都兰县| 铁力市| 福贡县| 鱼台县| 垣曲县| 玉林市| 金昌市| 松原市| 建阳市| 蓝山县| 东乌| 宁阳县| 龙南县| 宜君县| 桃园市| 滦平县| 南投市| 陇西县| 都江堰市| 阳江市| 澄城县| 贵南县| 健康| 新和县| 万盛区| 蓬溪县| 钟祥市| 哈尔滨市| 绵竹市| 建阳市| 阳高县| 加查县| 锦屏县| 孟州市| 手机| 夹江县| 库伦旗| 云南省| 开平市| 尉氏县| 布尔津县|