python IO多路 IO多路复用+socket实现 协程

 1. IO多路复用

  IO多路复用作用:检测多个socket是否已经发生变化(是否已经连接成功/是否已经获取数据)(可读/可写)
 
 2. 基于IO多路复用+socket实现并发请求(一个线程100个请求)

    IO多路复用          socket非阻塞

  
    基于事件循环实现的异步非阻塞框架:lzl
     非阻塞:不等待
        异步:执行完某个人物后自动调用我给他的函数。
    Python中开源 基于事件循环实现的异步非阻塞框架 Twisted

3.IO多路复用作用?
     检测多个socket是否发生变化。
     操作系统检测socket是否发生变化,有三种模式:
        select:最多1024个socket;循环去检测。
        poll:不限制监听socket个数;循环去检测(水平触发)。
        epoll:不限制监听socket个数;回调方式(边缘触发)。

Python模块:
      select.select
      select.epoll   

4.提高并发方案 : 

    多进程

    多线程

    异步非阻塞模块  (Twisted) scrapy框架(单线程完成并发)的大V大V

5.什么是异步非阻塞?

    非阻塞 , 不等待

      比如创建socket对某个地址进行connect、获取接收数据recv时默认都会等待(连接成功或接收到数据),才执行后续操作。
          如果设置setblocking(False),以上两个过程就不再等待,但是会报BlockingIOError的错误,只要捕获即可。
         异步,通知,执行完成之后自动执行回调函数或自动执行某些操作(通知)。
    比如做爬虫中向某个地址baidu.com发送请求,当请求执行完成之后自执行回调函数。

6.什么是同步阻塞 ?

    阻塞 : 等

    同步 : 按照顺序逐步执行

 

 3. 协程
 

猜你喜欢

转载自www.cnblogs.com/SUIFAN/p/9644232.html