生成器与协程 | Python

Posted pymkl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成器与协程 | Python相关的知识,希望对你有一定的参考价值。

# 生成器与协程
# 生成器是一种特殊的迭代器,它同样生成一个值的序列;
# 如何定义生成器?
# 方法一:函数中使用yield关键字;
    class count_down(n):
        while n>0:
            yield n
            n-=1
    # 创建一个生成器对象
    c = count_down(10)
    # __next__()方法调用生成器;
    >> c.__next__()
    10
# 生成器对象提供了close()方法,来避免部分消耗;
# 即:停止使用生成器时,就会自动调用close()方法;
    class count_down(n):
        try:
            while n>0:
                yield n
                n-=1
        except GeneratorExit:
            print(捕捉到退出的异常!)
    c = count_down(10)
    for i in c:
        print(i)
        if i==5:
            break
    >> ... # 循环输出至5
    >> 捕捉到退出的异常!
    
# 生成器实现简单的协程
    def coroutine(func):
        def start():
            g = func()
            g.next()
            return g
        return start
    @coroutine
    def receiver():
        while True:
            n = yield
            print("Got %s"%n)
    r = receiver()
    r.send(hello world)

 

以上是关于生成器与协程 | Python的主要内容,如果未能解决你的问题,请参考以下文章

生成器与协程 | Python

帮你搞懂Python进程,线程与协程

Python并发编程——多线程与协程

自己手写调度器,理解Python中的asyncio异步事件循环与协程

自己手写调度器,理解Python中的asyncio异步事件循环与协程

自己手写调度器,理解Python中的asyncio异步事件循环与协程