假设我想在打印"Main"之前打印"Foo"。在Lua中,可以通过以下代码来实现:
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实现它,它就会实现:
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实现它。
发布于 2022-01-14 17:58:41
使用asyncio.gather()运行协同工作:
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())https://stackoverflow.com/questions/70714507
复制相似问题