Slide 20
Slide 20 text
Coroutines via Enhanced Generator
(PEP 342; 2005)
def ping():
v = yield pong_g
print("ping received {}".format(v))
pong_g.send(v + 1)
def pong():
v = yield ping_g
print("pong received {}".format(v))
pong_g.send(v + 1)
ping_g = ping()
pong_g = pong()
next(ping_g)
next(pong_g)
ping_g.send(1)
ping received 1
pong received 2
Traceback (most recent call last):
File "test.py", line 17, in
ping_g.send(1)
File "test.py", line 4, in ping
pong_g.send(v + 1)
File "test.py", line 10, in pong
pong_g.send(v + 1)
ValueError: generator already executing