zoukankan      html  css  js  c++  java
  • IO多路复用 基于IO的单线程并发 协程

    https://www.cnblogs.com/nianshaoyouwei/p/9642991.html

    一. IO多路复用

      检测多个socket是否已经发生变化(是否已经连接成功/是否已经获取数据)(可读/可写)

      操作系统检测socket是否发生变化,有三种模式:

          select:最多1024个socket;循环去检测.

          poll:不限制监听socket个数;循环去检测(水平触发).

          epoll:不限制监听socket个数;回调方式(边缘触发).

      Python模块:

          select.select

          select.epoll

    二.基于IO多路复用+socket实现并发请求

      IO多路复用+socket非阻塞+捕获异常(BlockingIOError) 

        此方法称为基于事件循环实现的异步非阻塞框架(非阻塞:不等待   异步:执行完某个人物后自动调用我给他的函数.)

      python中开源模块 Twisted

    三.协程.

    1.什么是协程

      协程也可以称为"微线程",就是开发者控制线程执行流程,控制先执行某段代码然后再切换到另外函数执行代码...来回切换.

    2.协程可以提高并发吗

      协程自己本身无法实现并发,但协程+IO切换性能可以提高.

    3.单线程提高并发:

      协程+IO切换:gevent

      基于事件循环的异步非阻塞框架:Twisted

    4.手动实现协程:yield关键字生成器

        

    复制代码
    def f1():
                    print(11)
                    yield
                    print(22)
                    yield
                    print(33)
    
                def f2():
                    print(55)
                    yield
                    print(66)
                    yield
                    print(77)
    
                v1 = f1()
                v2 = f2()
    
                next(v1) # v1.send(None)
                next(v2) 
                next(v1) 
                next(v2) 
                next(v1) 
                next(v2) 
  • 相关阅读:
    php函数
    2、Locust压力测试 实战
    mysql常用命令
    3、加强siege性能测试
    2、使用siege进行服务端性能测试
    1、siege安装
    京东云Ubuntu下安装mysql
    1、Locust压力测试环境搭建
    1、Monkey环境搭建
    Postman和Selenium IDE开局自带红蓝BUFF属性,就问你要还是不要
  • 原文地址:https://www.cnblogs.com/fengff/p/13647183.html
Copyright © 2011-2022 走看看