IO多路复用 基于IO的单线程并发 协程

一. 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) 

 

转载于:https://www.cnblogs.com/nianshaoyouwei/p/9642991.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值