IO多路复用select ,pool ,epool之间的区别
1.从跨平台来说。
1.select 跨平台性最好 效率一般 最多监控1024个IO
2.pool 跨平台一般 效率一般 监控IO无上限,水平触发。
3.epool 跨平台性差 效率高 监控IO无上限,边缘触发。
IO多路复用对比:
select优点:支持系统多 * 缺点:效率一般(相对以epool方法),最多监控1024
pool优点:监控IO数量没有限制。 缺点:效率一般(相对于epool方法),pool和select方法效率相当
epool优点:监控IO无限制,效率最高。 缺点:只支持Linux**
2.代码:
1.select方法
'''
IO多路复用
select方法
rs,ws,xs=select(rlist,wlist,xlist)参数分别是监管读IO 写IO 异步IO
1.套接字属于读IO同时也属于写IO,被动连接,主动发送消息
2.原理是select将监控的IO事件放在操作系统上,IO事件准备就绪就将相应的IO事件提交给应用处理
将相应的IO事件放在对应的列表中
'''
from select import select#导包
from socket import *
s=socket()
s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)#端口重用
s.bind(('0.0.0.0',8888))
s.listen(5)
rlist=[s]
wlist=[]
xlist=[]
while True:
# 循环监控s
rs,ws,xs=select(rlist,wlist,xlist)#一个客户端连接s触发
for r in rs:#[s,c,c,c.......]
if r is s:
# 又有客户端链接,处理完连接将跳到开头往下执行
c,addr=r