zoukankan      html  css  js  c++  java
  • python【协程】【基础】

    1. Python对协程的支持是通过generator实现的
    # 生产者send
    # 消费者yield 【yield不但可以返回一个值,它还可以接收调用者发出的参数】
    
    
    def consumer():
        r = ''
        while True:
            n = yield r
            if not n:
                return
            print('[CONSUMER] Consuming %s...' % n)
            r = '200 OK'
    
    def produce(c):
        c.send(None)
        n = 0
        while n < 5:
            n = n + 1
            print('[PRODUCER] Producing %s...' % n)
            r = c.send(n)
            print('[PRODUCER] Consumer return: %s' % r)
        c.close()
    
    c = consumer()
    produce(c)
    
    
    
    注意到consumer函数是一个generator,把一个consumer传入produce后:
    首先调用c.send(None)启动生成器;
    然后,一旦生产了东西,通过c.send(n)切换到consumer执行;
    consumer通过yield拿到消息,处理,又通过yield把结果传回;
    produce拿到consumer处理的结果,继续生产下一条消息;
    produce决定不生产了,通过c.close()关闭consumer,整个过程结束。
    整个流程无锁,由一个线程执行,produce和consumer协作完成任务,所以称为“协程”,而非线程的抢占式多任务。
    
  • 相关阅读:
    Java 继承
    java 封装
    单选题
    实操题
    面试题
    Linux系统常用命令
    Shell脚本编写登陆小程序.sh
    利用shell脚本实现每隔60秒磁盘内存数据监控脚本
    shell脚本一键配置本地yum源
    shell点名脚本不重复人名
  • 原文地址:https://www.cnblogs.com/amize/p/15194041.html
Copyright © 2011-2022 走看看