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.老王還是用水壺煮水,不再傻傻的站在那裡看水開,跑去寢室上網,但是...