Python协程

示例

生成器可用于实现协程:

# 创建并提高生成器到第一产量
def coroutine(func):
    def start(*args,**kwargs):
        cr = func(*args,**kwargs)
        next(cr)
        return cr
    return start

# 协程示例
@coroutine
def adder(sum = 0):
    while True:
        x = yield sum
        sum += x

# 示例使用
s = adder()
s.send(1) # 1
s.send(2) # 3

协程通常用于实现状态机,因为它们主要用于创建需要状态正常运行的单方法过程。它们以现有状态进行操作,并返回操作完成时获得的值。