Coroutines
Example 1
def TokenIssuer():
tokenId = 0
while True:
name = yield
tokenId += 1
print('Token number of', name, ':', tokenId)
t = TokenIssuer()
next(t)
t.send('George')
t.send('Rosy')
t.send('Smith')
OutputToken number of George: 1
Token number of Rosy: 2
Token number of Smith: 3
Example 2
def TokenIssuer(tokenId=0):
try:
while True:
name = yield
tokenId += 1
print('Token number of', name, ':', tokenId)
except GeneratorExit:
print('Last issued Token is :', tokenId)
t = TokenIssuer(100)
next(t)
t.send('George')
t.send('Rosy')
t.send('Smith')
t.close()
OutputToken number of George: 101
Token number of Rosy: 102
Token number of Smith: 103
Last issued Token is: 103
Example 3
def coroutine_decorator(func):
def wrapper(*args, **kwdargs):
c = func(*args, **kwdargs)
next(c)
return c
return wrapper
@coroutine_decorator
def TokenIssuer(tokenId=0):
try:
while True:
name = yield
tokenId += 1
print('Token number of', name, ':', tokenId)
except GeneratorExit:
print('Last issued Token is :', tokenId)
t = TokenIssuer(100)
t.send('George')
t.send('Rosy')
t.send('Smith')
t.close()
OutputToken number of George: 101
Token number of Rosy: 102
Token number of Smith : 103
Last issued Token is : 103
No comments:
Post a Comment