如何从函数对象创建本机协程?

Posted

技术标签:

【中文标题】如何从函数对象创建本机协程?【英文标题】:How can I create native coroutine from function object? 【发布时间】:2015-10-28 13:00:10 【问题描述】:

基于生成器的协程可以很容易地从函数对象中创建:

coro = asyncio.coroutine(func)

原生协程(通常由 async def 创建)怎么样? 有没有办法从现有的函数对象创建它们?

【问题讨论】:

【参考方案1】:

在 Python 3.5 中,创建异步函数的方法是使用 async def() 语法。不确定尝试将普通函数包装到本机协程中的好处,因为如果没有什么可等待的,那似乎毫无意义?特别是因为不需要使用 await 或 yield from 来调用函数? (因为你可以正常执行。)

不过,这对您的目的有用吗?

def test():
    print('boo')

async def async_test():
    return test()

【讨论】:

有利于在特殊情况下进行包装,当我们不能将函数定义为协程,但我们需要将其用作协程时。最好看看:***.com/a/23036785/1113207 您有具体的用例示例吗? 我也不遵循用例。 你是对的。我才明白,我真的不需要。

以上是关于如何从函数对象创建本机协程?的主要内容,如果未能解决你的问题,请参考以下文章

多任务协程怎么写

多任务协程怎么写

Kotlin 协程协程启动 ⑥ ( 协程生命周期状态 | 新创建 New | 活跃 Active | 完成中 Completing | 已完成 Completed | 取消中 | 已取消 )

Kotlin 协程协程启动 ⑥ ( 协程生命周期状态 | 新创建 New | 活跃 Active | 完成中 Completing | 已完成 Completed | 取消中 | 已取消 )

多任务异步协程,asyncio及aiohttp

从扩展返回“本机”PHP 对象