美文网首页
协程:生产者消费者模型

协程:生产者消费者模型

作者: 陈忠俊 | 来源:发表于2020-08-09 17:54 被阅读0次

生产者消费者:

import logging
import time

logging.basicConfig(level = logging.DEBUG)
log = logging.getLogger(__file__)


def consumer():
    log.info("consumer start")
    while True:
        flag = yield
        log.info("running now: %s" %flag)
        time.sleep(1)

def producer(model):
    model.send(None) # 启动协程
    for i in range(10):
        log.info("producer running...")
        model.send(i)

if __name__ == "__main__":
    aa = consumer()
    producer(aa)

动态延时计算 斐波那契数列

import time
import random

def fib(n, start):
    index = 0
    a = 0
    b = 1
    start = start
    while index < n:
        sleep_cnt = yield start
        print("let me think {} seconds".format(sleep_cnt))
        time.sleep(sleep_cnt)
        a, b = b, a + b
        index += 1
        start -= 1

print("test yield send")
N = 20

sfib = fib(N, 11)
res = next(sfib)

while True:
    print(res)
    try:
        res = sfib.send(random.uniform(0, 0.5) * 10)
    except StopIteration:
        break

相关文章

  • 理解Python的协程(Coroutine)

    生成器(Generator)yield表达式的使用生产者和消费者模型yield from表达式 协程(Corout...

  • Python开发【模块】:tornado.queues协程的队列

    协程的队列 协调生产者消费者协程. 在Python 3.5,Queue实现了异步迭代器协议, 所以consumer...

  • 关于Coroutine\Channel的几点注意

    通道,类似于go语言的chan,支持多生产者协程和多消费者协程。底层自动实现了协程的切换和调度。 实现原理 通道与...

  • 协程:生产者消费者模型

    生产者消费者: 动态延时计算 斐波那契数列

  • kotlin<第十一篇>:Channel-通道

    (1)基本用法 Channel实际上是一个并发安全的队列,它可以用来连接协程,实现不同协程的通信。生产者/消费者模...

  • Python进阶 协程

    Python中的协程和生成器很相似但又稍有不同。主要区别在于: 生成器是数据的生产者 协程则是数据的消费者

  • 34.Python之生产者消费者模型

    Python之生产者消费者模型(非常重要) 生产者消费者模型模型指的是一种解决问题的套路。 生产者消费者模型中包含...

  • 生产者和消费者模型

    生产者和消费者模型 1. 什么是生产者和消费者模型 生产者消费者模型具体来讲,就是在一个系统中,存在生产者和消费者...

  • 生产者消费者(一)

    生产者消费者模型: 生产者------> 缓存<-------- 消费者

  • Future

    Future 模式只是生产者-消费者模型的扩展。经典“生产者-消费者”模型中消息的生产者不关心消费者何时处理完该条...

网友评论

      本文标题:协程:生产者消费者模型

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