Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 这两种基于生成器的协同程序是同一个概念吗?_Python_Python 3.x_Asynchronous_Generator_Coroutine - Fatal编程技术网

Python 这两种基于生成器的协同程序是同一个概念吗?

Python 这两种基于生成器的协同程序是同一个概念吗?,python,python-3.x,asynchronous,generator,coroutine,Python,Python 3.x,Asynchronous,Generator,Coroutine,似乎有两种基于生成器的协同程序: 从 作者Jim Fasarakis Hilliard: 基于生成器的协同程序:一个由。你需要把它包起来 types.coroutine如果需要将其视为一个coroutine对象 简而言之,它并不显式地调用Python “基于生成器的协同程序”: 当您基于asyncio编写Python代码时(理想情况下也使用 (来自asyncio.org的附加模块),您通常会编写 协程函数。直到包含Python3.4,这些函数 生成器是否使用“收益率”中包含的yield fro

似乎有两种基于生成器的协同程序:

  • 从 作者Jim Fasarakis Hilliard:

    基于生成器的协同程序:一个由。你需要把它包起来
    types.coroutine
    如果需要将其视为一个coroutine对象

  • 简而言之,它并不显式地调用Python “基于生成器的协同程序”:

    当您基于
    asyncio
    编写Python代码时(理想情况下也使用 (来自asyncio.org的附加模块),您通常会编写 协程函数。直到包含Python3.4,这些函数 生成器是否使用“收益率”中包含的
    yield from
    语句 第95页上的from(仅v3)”用
    @asyncio.coroutine
    修饰, 包含在第518页的“异步协同程序”中

    基于生成器的协同程序(对于异步IO代码,必须用@asyncio.coroutine修饰)

    也称之为“基于生成器的协同程序”

  • 这两种基于生成器的协同程序是同一个概念吗

    如果没有,它们在用途和用法上有什么区别


    谢谢。

    就我而言,
    async def
    是定义协同程序的合适方法<代码>收益和
    来自
    的收益在生成器中有其用途,它们还用于实现“未来”,这是处理不同协同程序上下文之间切换的低级机制

    几个月前,我总结了他们之间的关系。但坦率地说,你完全可以忽略整个事情。事件循环的任务是处理管理协同路由执行的所有低级细节,因此请使用其中的一个,如。对于其他事件循环,也有
    asyncio
    兼容的包装器,比如我自己的GLib/GTK包装器


    换句话说,坚持使用
    asyncio
    API,就可以编写“事件循环不可知”的协同路由了

    就我而言,
    async def
    是定义协同程序的合适方法<代码>收益和
    来自
    的收益在生成器中有其用途,它们还用于实现“未来”,这是处理不同协同程序上下文之间切换的低级机制

    几个月前,我总结了他们之间的关系。但坦率地说,你完全可以忽略整个事情。事件循环的任务是处理管理协同路由执行的所有低级细节,因此请使用其中的一个,如。对于其他事件循环,也有
    asyncio
    兼容的包装器,比如我自己的GLib/GTK包装器


    换句话说,坚持使用
    asyncio
    API,就可以编写“事件循环不可知”的协同路由了

    他们是同一类型的合作伙伴<代码>类型.coroutine和
    异步.coroutine
    只是创建它们的两种不同方法

    asyncio.corroutine
    async
    corroutine引入之前更为古老,并且它的功能已经从最初的行为发生了一些变化,现在
    async
    corroutine已经存在


    asyncio.corroutine
    类型。corroutine
    具有微妙的不同行为,特别是当应用于除生成器函数以外的任何对象时,或者如果asyncio处于异步状态时。

    它们是同一种corroutine<代码>类型.coroutine和
    异步.coroutine
    只是创建它们的两种不同方法

    asyncio.corroutine
    async
    corroutine引入之前更为古老,并且它的功能已经从最初的行为发生了一些变化,现在
    async
    corroutine已经存在

    asyncio.corroutine
    类型.corroutine
    具有细微不同的行为,尤其是当应用于除生成器函数以外的任何对象时,或者如果asyncio处于