我理解的执行流程应该是这样的: 1.运行produce()后,开始执行到c.send(None),跳入consumer函数并执行到n = yield r停止,此时r = ''; 2.然后开始produce()的第一次循环,从r = c.send(n)开始,跳入consumer函数,并把send的参数赋值给consumer()第一次循环的n,此时r = 1,n = 1. 3.因为consumer()第一次循环的n != '',因此直接print [CONSUMER] Consuming 1...,并赋200 OK给r 4.接着开始第二次循环,执行到n = yield r停止,即最后返回r给到produce()的r变量,因此produce会print [PRODUCER] Consumer return: 200 OK。 5.循环2,3,4步骤直到第五次循环,然后手动关闭生成器。
produce()
c.send(None)
n = yield r
r = c.send(n)
send
consumer()
n != ''
print [CONSUMER] Consuming 1...
200 OK
r
produce
print [PRODUCER] Consumer return: 200 OK
不知道有没有错,若有错误希望大牛指出!
Sign in to make a reply
greatzues
我理解的执行流程应该是这样的: 1.运行
produce()
后,开始执行到c.send(None)
,跳入consumer函数并执行到n = yield r
停止,此时r = ''; 2.然后开始produce()
的第一次循环,从r = c.send(n)
开始,跳入consumer函数,并把send
的参数赋值给consumer()
第一次循环的n,此时r = 1,n = 1. 3.因为consumer()
第一次循环的n != ''
,因此直接print [CONSUMER] Consuming 1...
,并赋200 OK
给r
4.接着开始第二次循环,执行到n = yield r
停止,即最后返回r
给到produce()
的r
变量,因此produce
会print [PRODUCER] Consumer return: 200 OK
。 5.循环2,3,4步骤直到第五次循环,然后手动关闭生成器。不知道有没有错,若有错误希望大牛指出!