1.参考文献
https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013868328689835ecd883d910145dfa8227b539725e5ed000
2.源码
#!/usr/bin/env python2
import time
def consumer():
print("[consumer] start")
r = ''
while True:
print('[consumer] while....')
n = yield r #执行c.send,会将值赋给yield的左侧变量,也就是n,然后从yield的下一行开始执行,执行完毕,返回yield的右侧变量,也就是r
print('[consumer] n=yield r ok, n=%d, r=%s'%(n,r))
if not n:
return
print('[CONSUMER] Consuming %s...' % n)
r = '200 OK'+':n='+str(n)
def produce(c):
c.next() #python3 请用 c.__next__()代替
print("[producer] next sleep ")
time.sleep(3)
n = 0
while n < 5:
print("")
print("[producer] while...n=",n)
time.sleep(3)
n = n + 1
print('[PRODUCER] Producing %s...' % n)
print('[producer] c.send to be run')
r = c.send(n)
print('[PRODUCER] Consumer return: %s' % r)
c.close()
if __name__=='__main__':
c = consumer()
produce(c)