IO多路复用select ,pool ,epool之间的区别

IO多路复用select ,pool ,epool之间的区别1.从跨平台来说。1.select 跨平台性最好 效率一般 最多监控1024个IO2.pool 跨平台一般 效率一般 监控IO无上限,水平触发。3.epool 跨平台性差 效率高 监控IO无上限,边缘触发。IO多路复用对比:select优点:支持系统多 &nbsp...
摘要由CSDN通过智能技术生成

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
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值