美文网首页
054 Python语法之协程

054 Python语法之协程

作者: Luo_Luo | 来源:发表于2017-09-12 11:45 被阅读0次

    作用

    1. 控制函数分段执行,节约线程或进程的切换资源
    2. 有多少个yield就对应多少个Send,包括Send(None)

    小案例

    def go():
        print("1")
        yield 10
        print("2")
        yield 20
        print("3")
        yield 30
        
    my = go()
    print(type(my)) # 生成器
    print(next(my))
    print(next(my))
    
    -----------------
    
    

    协程强化

    def go():
        try:
            data=""         # 存储数据的作用,始终为空
            r = yield data  # r = a
            print("1",r)
            r = yield data  # r = b
            print("2",r)
            r = yield data  # r = c
            print("3",r)
        except StopIteration("已经到最后了"):
            pass
            
    my = go()
    print(type(my)) # 生成器
    print(my.send(None))    # 启动my
    print(my.send("a"))
    print(my.send("b"))
    print(my.send("c"))
    

    协程的生产者消费者模式

    def maker(d):
        d.send(None) # 启动消费者
        n=0
        while n<1000:
            n=n+1
            print("生产",n)
            r=d.send(n)
            print("消费者返回的",r)
        d.close()   # 关闭生成器
    
    
    
    def deleter():
        r=""
        while True:
            n=yield r #获取发送的数据 ,n收到的数据,r是返回的数据
            if not n:
                return
            print("消费",n)
            r="OK"+str(n)
    
    d=deleter()
    print(type(d))
    maker(d)
    

    相关文章

      网友评论

          本文标题:054 Python语法之协程

          本文链接:https://www.haomeiwen.com/subject/khkcsxtx.html