python—yield实现单线程的异步并发

 

python—yield实现单线程的异步并发

 

 

 

import time
def consumer(name):
        print("%s 准备吃包子了!" %name)

        while True:
            baozi = yield
            print("包子%s来了,被%s吃了!" %(baozi,name))

def producer(name):
    c  = consumer('A')
    c2 = consumer('B')
    c.__next__()
    c2.__next__()
    print("老子开始准备做包子")

    for i in range(10):
        time.sleep(1)
        print("做了两个包子")
        c.send(i)
        c2.send('XXXX')

producer('wangxu')




/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 /Users/admin/PycharmProjects/s18/day3/yield.py
A 准备吃包子了!
B 准备吃包子了!
老子开始准备做包子
做了两个包子
包子0来了,被A吃了!
包子XXXX来了,被B吃了!
做了两个包子
包子1来了,被A吃了!
包子XXXX来了,被B吃了!
做了两个包子
包子2来了,被A吃了!
包子XXXX来了,被B吃了!
做了两个包子
包子3来了,被A吃了!
包子XXXX来了,被B吃了!
做了两个包子
包子4来了,被A吃了!
包子XXXX来了,被B吃了!
做了两个包子
包子5来了,被A吃了!
包子XXXX来了,被B吃了!
做了两个包子
包子6来了,被A吃了!
包子XXXX来了,被B吃了!
做了两个包子
包子7来了,被A吃了!
包子XXXX来了,被B吃了!
做了两个包子
包子8来了,被A吃了!
包子XXXX来了,被B吃了!
做了两个包子
包子9来了,被A吃了!
包子XXXX来了,被B吃了!

进程已结束,退出代码0

 

posted on 2017-08-31 10:50  光阴8023  阅读(467)  评论(0编辑  收藏  举报