非阻塞IO
2018-09-04 17:33 冻奶香甜玉米片 阅读(181) 评论(0) 编辑 收藏 举报非阻塞IO其实就是一直询问操作系统想要的信息来了没有
如socket套接字通信,就用监测信息尚未到达的错误用来切换到其他任务中去(try except BlockingIOError)
记得
server.setblocking(False)
但是它的缺点是:
1、一直占用CPU,自己的任务效率虽然高了,但是别人的任务效率就低了
2、是一个死循环,占用CPU做的无用功多,用于一直询问操作系统
3、当信息到了可以进行任务时,并不能及时切换
egon say(
1. 循环调用recv()将大幅度推高CPU占用率;这也是我们在代码中留一句time.sleep(2)的原因,否则在低配主机下极容易出现卡机情况
2. 任务完成的响应延迟增大了,因为每过一段时间才去轮询一次read操作,而任务可能在两次轮询之间的任意时间完成。
这会导致整体数据吞吐量的降低。
)