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)
    生成器实现生产者消费者模型
  • 相关阅读:
    辗转相除法求最大公约数
    洛谷——P2615 神奇的幻方 【Noip2015 day1t1】
    二分图的一大泼基础题
    HDU——T 1150 Machine Schedule
    HDU——T 1068 Girls and Boys
    POJ——T 3020 Antenna Placement
    Web框架Django(二)
    February 25 2017 Week 8 Saturday
    February 24 2017 Week 8 Friday
    February 23 2017 Week 8 Thursday
  • 原文地址:https://www.cnblogs.com/xiaoqianghuihui/p/6869104.html
Copyright © 2011-2022 走看看