非同步非阻塞

2022-08-04 10:39:09 字數 2401 閱讀 8959

sk.setblocking(false) #不會阻塞但是會報錯

setattr(sk,

'callback_func

',url_func[1])

try:

#阻塞,非阻塞報錯,捕捉錯誤

sk.connect((url_func[0],80))

except

blockingioerror as e:

pass

while

true:

#通過fileno方法,檢測socket是否已經發生變化。

#wlist = [sk(cnblogs),sk(qq)],表示鏈結成功

rlist,wlist,elist = select.select(inputs,connects,,0.05)

#鏈結成功

#獲取響應內容,對其執行之前設定的callback_fun

for item in

rlist:

data = item.recv(8096)

inputs.remove(item)

item.callback_func(data)

ifnot

inputs:

break

封裝後

import

#檢測socket是否已經發生變化。

#wlist = [sk(cnblogs),sk(qq)],表示鏈結成功

rlist,wlist,elist = select.select(inputs,connects,,0.05)

#鏈結成功

#響應內容

for item in

rlist:

data = item.sk.recv(8096)

inputs.remove(item)

item.func(data)

ifnot

inputs:

break

非同步非阻塞

首先討論下使用事件驅動,非同步程式設計的優點 充分利用了系統資源,執行 無須阻塞等待某種操作完成,有限的資源可以用於其他的任務。其非常適合於後端的網路服務程式設計。在伺服器開發中,併發的請求處理是個大問題,阻塞式的函式會導致資源浪費和時間延遲。通過事件註冊 非同步函式,開發人員可以提高資源的利用率,...

阻塞,非阻塞,非同步,同步

之前一直對這個概念理不太清楚,今天看到一篇文章感覺不錯 本文 老張愛喝茶,廢話不說,煮開水。出場人物 老張,水壺兩把 普通 水壺,簡稱水壺 會響的水壺,簡稱響水壺 1 老張把水壺放到火上,立等水開。同步阻塞 老張覺得自己有點傻 2 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。同步非阻...

同步 非同步 阻塞 非阻塞

故事 老王燒開水。出場人物 老張,水壺兩把 普通水壺,簡稱水壺 會響的水壺,簡稱響水壺 老王想了想,有好幾種等待方式 1.老王用水壺煮水,並且站在那裡,不管水開沒開,每隔一定時間看看水開了沒。同步阻塞 老王想了想,這種方法不夠聰明。2.老王還是用水壺煮水,不再傻傻的站在那裡看水開,跑去寢室上網,但是...