美文网首页
Python进阶 协程

Python进阶 协程

作者: FicowShen | 来源:发表于2018-06-13 16:18 被阅读9次

Python中的协程和生成器很相似但又稍有不同。主要区别在于:

  • 生成器是数据的生产者
  • 协程则是数据的消费者
def grep(pattern):
    print("Searching for", pattern)
    while True:
        line = (yield)
        print(type(line))
        if pattern in line:
            print(line)

# yield已经把变成了一个协程。它将不再包含任何初始值,相反要从外部传值给它。我们可以通过send()方法向它传值。


search = grep('coroutine')
next(search)
#output: Searching for coroutine
search.send("I love you")
search.send("Don't you love me?")
search.send("I love coroutine instead!")
#output: I love coroutine instead!

# 发送的值会被yield接收。我们为什么要运行next()方法呢?这样做正是为了启动一个协程。
# 就像协程中包含的生成器并不是立刻执行,而是通过next()方法来响应send()方法。
# 因此,你必须通过next()方法来执行yield表达式。


# 可以通过调用close()方法来关闭一个协程。
search = grep('coroutine')
search.close()

相关文章

  • Python-02进阶-04多进程多线程

    Python 进阶-04 进程线程协程并发等.md tags: Python 多进程 并发 进阶 必备知识 201...

  • Python协程一从generator和yield表达式说起

    Python协程系列(一)——从generator和yield表达式说起 python进阶教程 机器学习 进入正文...

  • Python进阶 协程

    Python中的协程和生成器很相似但又稍有不同。主要区别在于: 生成器是数据的生产者 协程则是数据的消费者

  • python异步协程(aiohttp,asyncio)

    python异步协程 环境:python3.7.0 协程 协程,英文叫做 Coroutine,又称微线程,纤程,协...

  • asyncio + asyncio 异步编程实例

    协程用法 接下来,我们来了解下协程的实现,从 Python 3.4 开始,Python 中加入了协程的概念,但这个...

  • Python 协程

    仅供学习,转载请注明出处 协程 协程,又称微线程,纤程。英文名Coroutine。 协程是啥 协程是python个...

  • 协程

    1.协程 协程,又称微线程,纤程。英文名Coroutine。 1.1 协程是什么 协程是python个中另外一种实...

  • Python并发编程——协程

    摘要:Python,协程,gevent 协程基本概念 协程,又称微线程,纤程。英文名Coroutine,是Pyth...

  • 协程介绍

    协程 协程,又称微线程,纤程。英文名Coroutine。 1.协程是什么? 协程是python个中另外一种实现多任...

  • 4-7

    协程 协程,又称微线程,纤程。英文名Coroutine。 协程是啥 协程是python个中另外一种实现多任务的方式...

网友评论

      本文标题:Python进阶 协程

      本文链接:https://www.haomeiwen.com/subject/iunjeftx.html