zoukankan      html  css  js  c++  java
  • python的协程

    一、协程

    1、什么是协程

    协程,又称微线程,纤程。英文名Coroutine。

    优点:

    (1)、没有像进程和线程那样的切换的开销。

    (2)、没有锁的概念。

    协程本质上就是一个线程。

    最佳利用多核cpu的方案就是多进程+协程。

    2、yield生成器回顾

    # 生成器yield回顾
    
    def foo():
        print("ok")
        s = yield 6 #yield返回一个6,s是接受外部send过来的值
        print(s)
        print("ok2")
        yield
    
    gen=foo()
    num=next(gen)
    print(num)
    gen.send(100)
    
    #例子讲解:将Foo()函数赋值给gen,用next方法执行gen(生成器的运行方式),这个时候函数返回一个6,并用num变量接收,gen在send一个100的数值给foo函数,由foo函数内的s接收并进行后续的执行。
    #执行的时候遇到yield会临时退出,需要用next再次激发才能继续后续的步骤。

    3、用yield实现生产者消费者模型

     1 import time
     2 
     3 def Consumer(name):
     4     print("ready to eat baozi....")
     5     while True:
     6         baozi = yield
     7         time.sleep(1)
     8         print("%s eat baozi %s" % (name,baozi))
     9 
    10 def Producer(c1,c2):
    11     c1.__next__()
    12     c2.__next__()
    13     count = 0
    14     while True:
    15         time.sleep(1)
    16         print("33[32;1m[producer]33[0m is making baozi %s and %s" %(count,count+1))
    17         c1.send(count)
    18         c2.send(count+1)
    19 
    20         count +=2
    21 
    22 c1 = Consumer("zhangsan")
    23 c2 = Consumer("lisi")
    24 
    25 Producer(c1,c2)
    生成器实现生产者消费者模型
  • 相关阅读:
    pycharm 使用pip3更新插件已经更新时报错
    剑指Offer系列之题11~题15
    剑指Offer系列之题1~题5
    个人hexo博客(静态,无后台)搭建
    设计模式之单例模式
    Hibernate实现limit语句效果
    Springboot项目中 前端展示本地图片
    eclipse报错:problems during content assist
    python中open与with open的区别
    修改Jenkins目录
  • 原文地址:https://www.cnblogs.com/xiaoqianghuihui/p/6869104.html
Copyright © 2011-2022 走看看