码迷,mamicode.com
首页 > 编程语言 > 详细

python IO模型

时间:2018-05-18 23:28:19      阅读:302      评论:0      收藏:0      [点我收藏+]

标签:zzu   导致   atm   大量   iso   rtb   emc   wrk   xid   

网络编程中有基本的5中IO模型,每种模型有个子的特色但是 ,他们都是为了解决在IO的过程中阻塞的问题而研究出来的!

1,阻塞IO模型(blocking)

  最基础的模型之一,从学习网络编程开始,写的大部分都为阻塞IO模型

技术分享图片

    阻塞IO 的基本图形,当python发起接收数据时向操作系统请求,此时会阻塞,一直等待有数据有数据被copy返回给python,因此阻塞IO不会充分的使用cpu,并且在切换的过程中消耗了大量的时间,由此想要解决这些问题从而有了非阻塞IO模型。

 

2,非阻塞IO模型(non-blocking)

  非阻塞IO模型在阻塞IO模型的基础上使python发送请求后获得反馈,当没有数据时去执行后面的代码,一段时间后再次询问,从当有数据的获得数据的copy,这就是非阻塞IO模型,避免了阻塞状态。

  技术分享图片

  1,但是非阻塞模型IO模型需要占用大量的cpu,并且使用效率并不高,需要不断询问kernel数据是否准备完毕,

  2,由于使用轮询的方式,而任务可能在轮询中的任意位置出现,会导致整体数据的吞吐量降低。所以非阻塞IO并不被推荐使用

 

3,多路复用IO(multiplexing)

  多路复用IO模型是利用代理处理阻塞问题,代理能够处理多个链接,因此更支持多线访问情况。

技术分享图片

  主义是事项:

  1,如果处理的连接数不是很高的情况使用多路复用不一定比blocking效率高,可能延迟性更大,其优势是在更多的连接情况。

 

4,异步IO

  一般都是操作系统处理机制的一种,操作系统自动使用。

  

 

python IO模型

标签:zzu   导致   atm   大量   iso   rtb   emc   wrk   xid   

原文地址:https://www.cnblogs.com/wpcbk/p/9058314.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!