首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Coroutine(Asyncio) -如何?

Python Coroutine(Asyncio) -如何?
EN

Stack Overflow用户
提问于 2022-01-14 17:38:29
回答 1查看 96关注 0票数 0

假设我想在打印"Main"之前打印"Foo"。在Lua中,可以通过以下代码来实现:

代码语言:javascript
复制
local function sleep(sec)
    local start_sleep = os.clock()
    while os.clock() - start_sleep <= sec do
    end
end

local function foo()
    sleep(2)
    print("Foo")
end

local function main()
    coroutine.wrap(foo)()
    print("Main")
end

main()

--[[ 

// Output:

Main
-- waits 2 seconds
Foo

]]

但是,如果我试图用Python实现它,它就会实现:

代码语言:javascript
复制
import asyncio

async def foo():
    await asyncio.sleep(2)
    print("Foo")

def main():
    asyncio.run(foo())
    print("Main")

main()

"""
// Output:

-- waits 2 seconds
Foo
Main

"""

由于我是Python的初学者,我想知道如何用Python实现它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-14 17:58:41

使用asyncio.gather()运行协同工作:

代码语言:javascript
复制
from asyncio import gather, run, sleep


async def aprint(*args, **kwargs):
    return print(*args, **kwargs)


async def foo():
    await sleep(2)
    await aprint("Foo")

async def main():
    await gather(
        foo(),
        aprint("Main")
    )

run(main())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70714507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档