zoukankan      html  css  js  c++  java
  • 五、IO模型简介

    1、IO模型简介

    """
    针对网络IO
    """
    """
    	* blocking IO	阻塞IO
    	* nonblocking IO 非阻塞IO
    	* IO multiplexing 	IO多路复用
    	* signal driven IO	信号驱动IO
    	* asynchronous IO	 异步IO 
    """

    2、图解

     

    3、IO多路复用

    3.1 使用方式

    # 服务端
    import socket
    import select
    """
    当监管的对象只有一个的时候,IO多路复用连阻塞IO都比不上
    但是IO多路复用可以一次性监管很多个对象
    
    监管机制是操作系统本身就有的,如select
    """
    
    
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.bind(("127.0.0.1", 8888))
    server_socket.listen(5)
    server_socket.setblocking(False)    # 设置为非阻塞
    
    read_list = [server_socket]  # 添加server_socket到监管的队列中
    
    while True:
        r_list, w_list, x_list = select.select(read_list, [], [])
        for i in r_list:
            # 针对不同的对象,做不同的处理
            if i is server_socket:
                client_socket, addr = i.accept()
                # 添加到监管的队列中
                read_list.append(client_socket)
            else:
                res = i.recv(1024)
                if len(res) == 0:
                    i.close()
                    # 将无效的监管对象 移除
                    read_list.remove(i)
                    continue
                print(res)
                i.send(b'test-test-test')
    
    
    # 客户端
    import socket
    
    client = socket.socket()
    client.connect(("127.0.0.1", 8888))
    
    while True:
        client.send(b'hello world')
        data = client.recv(1024)
        print(data)

    3.2 总结

    总结
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    监管机制包括:
    	select机制	windows linux都有
    	poll机制	只有linux有, poll和select都可以监管多个对象,但是poll监管的数量更多
    	
    	epoll机制		只在linux有,它给每个监管对象都绑定了一个回调机制, 一旦有响应,回调机制立刻发起提醒
    
    
    针对不同的操作系统需要考虑不同的检测机制,避免书写太多代码
    	selectors机制

    4、异步IO

    """
    异步IO模型是所有模型中效率最高的,也是使用最广泛的
    	相关的模块和框架
    	模块:asyncio模块
    	异步框架:sanic tronado twisted
    """
  • 相关阅读:
    React生命周期, 兄弟组件之间通信
    React组件式编程Demo-用户的增删改查
    React之this.refs, 实现数据双向绑定
    CCF CSP 201812-4 数据中心
    CCF CSP 201812-4 数据中心
    PAT 顶级 1020 Delete At Most Two Characters (35 分)
    PAT 顶级 1020 Delete At Most Two Characters (35 分)
    Codeforces 1245C Constanze's Machine
    Codeforces 1245C Constanze's Machine
    CCF CSP 201712-4 行车路线
  • 原文地址:https://www.cnblogs.com/nuochengze/p/13372747.html
Copyright © 2011-2022 走看看