zoukankan      html  css  js  c++  java
  • python I/O 多路复用

    总结:
    1. socket默认是否是阻塞的?阻塞体现在哪里?

    2. 如何让socket编程非阻塞?
    client.setblocking(False) #非阻塞

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

    4. 提高并发方案:
    - 多进程
    - 多线程
    - 异步非阻塞模块(Twisted) scrapy框架(单线程完成并发)

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

    6. 什么是同步阻塞?
    - 阻塞:等
    - 同步:按照顺序逐步执行

  • 相关阅读:
    Windows Vs2010 + Qt5
    Java基础1
    关键字volatile
    内联函数
    Const详解2
    模板特化
    引用
    旧代码中的"enum hack"
    angularjs之ngoption
    angularjs之向下一个页面传参
  • 原文地址:https://www.cnblogs.com/zy09/p/12228721.html
Copyright © 2011-2022 走看看