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

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

coro = asyncio.coroutine(func)

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

【问题讨论】:

    标签: python python-3.x python-asyncio


    【解决方案1】:

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

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

    def test():
        print('boo')
    
    async def async_test():
        return test()
    

    【讨论】:

    • 有利于在特殊情况下进行包装,当我们不能将函数定义为协程,但我们需要将其用作协程时。最好看看:stackoverflow.com/a/23036785/1113207
    • 您有具体的用例示例吗?
    • 我也不遵循用例。
    • 你是对的。我才明白,我真的不需要。
    猜你喜欢
    • 2023-03-24
    • 2018-10-01
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多