zoukankan      html  css  js  c++  java
  • day36 协程介绍/yield实现协程/补充/gevent模块/网络IO模型介绍/阻塞IO模型/非阻塞IO模型

    1、协程:
    单线程实现并发
    在应用程序里控制多个任务的切换+保存状态
    优点:
    应用程序级别速度要远远高于操作系统的切换
    缺点:
    多个任务一旦有一个阻塞没有切,整个线程都阻塞在原地
    该线程内的其他的任务都不能执行了

    一旦引入协程,就需要检测单线程下所有的IO行为,
    实现遇到IO就切换,少一个都不行,以为一旦 一个任务阻塞了,整个线程就阻塞了,
    其他的任务即便是可以计算,但是也无法运行了

    2、协程序的目的:
    想要在单线程下实现并发
    并发指的是多个任务看起来是同时运行的
    并发=切换+保存状态

    yield实现协程

    yield可以实现协程,但是无法做出有意义的提升效率的协程

     gevent模块的使用

    from gevent import monkey,spawn;monkey.patch_all()
    import time
    
    def eat(name):
        print('%s eat 1' %name)
        time.sleep(3)
        print('%s eat 2' %name)
    
    def play(name):
        print('%s play 1' %name)
        time.sleep(4)
        print('%s play 2' %name)
    
    start=time.time()
    g1=spawn(eat,'egon')  #内置的一个模块
    g2=spawn(play,'zmy')
    
    g1.join()
    g2.join()
    # eat('ooo')
    # play('rrr')
    print(time.time() - start)
    print(g1)
    print(g2)
    

    练习

    等补全

    网络IO模型介绍

    阻塞IO模型

    非阻塞IO模型

  • 相关阅读:
    外观模式及php实现
    桥接模式与装饰者模式的区别
    装饰者模式及php实现
    组合模式和php实现
    桥接模式和php实现
    适配器模式和php实现
    建造者模式以及php实现
    原型模式及php实现
    单例模式及php实现
    抽象工厂模式和php实现
  • 原文地址:https://www.cnblogs.com/wangmiaolu/p/9326286.html
Copyright © 2011-2022 走看看