Python之io概念

"""
同步,异步:
强调结果,调用者最终是否得到想要的结构
阻塞非阻塞:
强调时间是否等待

io二个阶段
1.数据准备阶段
2.内核空间复制回用户空间缓冲区阶段

发生io时候
1.内核从输入设备读,写数据
2.进程从内核复制数据

io模型
1.同步io包括阻塞io,非阻塞io,io多路复用
    阻塞io:进程等待(阻塞),直到读写完成
    非阻塞io:
        进程调用read操作,如果io没有准备好,立即返回error,进程不阻塞
        用户可以再次发起系统调用,内核准备好,就阻塞,复制数据到用户空间
    io多路复用:
        就是同时监控多个io,有一个准备好,就不需要等待了开始处理,提高了同时处理io的功能
        select所以的平台都支持,poll是对其的升级,epoll对poll的曾强增加回调机制,select最多监控
        1024个fd,select轮询的方式,效率低下
        epoll,fd没有上限,并且是回调机制,不需要遍历,效率高
2.异步io
进程发起异步io请求,立即返回,内核完成io的二个阶段,内核给进程发一个信号
linix aio的系统调用
"""
'''
abstractmethod register(fileobj,events,data=None)
为selector注册一个文件对象,监视他的io事件
fileobj被监视文件对象,例如socket
events事件,该文件对象必须等待的事件
data可选的与此文件对象相关联的不透明数据,例如关联用来存储每个客户端的会话id
event_read 可读0b01内核准备好输入输出设备,可以开始读了
event_write可写0b10内核准备好了,可以写了
'''

  

  

猜你喜欢

转载自www.cnblogs.com/harden13/p/9203857.html
今日推荐