def consumer(): print("[Consumer] Started") r = '' while True: n = yield r # send(None)后代码执行到这里 print("[Consumer] Yield return: %s" % str(n)) if not n: return print('[CONSUMER] Consuming %s...' % n) r = '200 OK' def produce(c): initY = c.send(None) # 若不发送None,会得到`TypeError: can't send non-None value to a just-started generator` # 这个None并不会作为第一次yield的返回值,它的作用仅仅是让生成器启动 # consumer启动, 打印"[Consumer] Started",yield出r的初始值 print("[PRODUCER] Init Y: %s" % str(initY)) n = 0 while n < 5: n = n + 1 print('[PRODUCER] Producing %s...' % n) r = c.send(n) print('[PRODUCER] Consumer return: %s' % r) c.close() c = consumer() produce(c)
Sign in to make a reply
Grey_kindle