io多路复用--本质

Posted 老王的农场

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了io多路复用--本质相关的知识,希望对你有一定的参考价值。

io多路复用:用来检测多个socket对象是否有变化

socket_list = []
for i in [www.baidu.com.,.,.,.,.]
  client = socket.socket()
  client.setblocking(False)
#连接
  try:
   client.connect(("i",80)) #阻塞
  except BlockingIOError as e:
   print(e)
  socket_list.append(client)
#事件循环
while true: #(检测)
  
r,w, e = select.select(socket_list,socket_list...,0.05)
#w    [sk2,sk3], 连接成功了 
for obj in w;
obj.send(‘get /http/1.0\...‘)
#r   [sk2,sk3],可读
          如果socket中返回内容了,表示可读,要收数据了
for obj in r:
response = obj.recv()
         print(response)

总结

1.client.setblocking(false)

2,select.select()  #检测:连接成功,数据回来

 

以上是关于io多路复用--本质的主要内容,如果未能解决你的问题,请参考以下文章

非阻塞套接字与IO多路复用

IO多路复用的三种机制Select,Poll,Epoll

IO多路复用

从Go编程看IO多路复用Select

IO多路复用之poll

python之IO多路复用——selectpollepoll详解