Asyncio wait_for 一个函数结束,或者换另一个
Asyncio wait_for one function to end, or for another
我的代码有两个函数:
async def blabla():
sleep(5)
和
async def blublu():
sleep(2)
asyncio.wait_for 据我所知可以等待这样一个函数:
asyncio.wait_for(blublu(), timeout=6)
或 asyncio.wait_for(blublu(), timeout=6)
我不想做的是让 asyncio 等待它们两个,如果其中一个结束得更快,则继续进行而不等待第二个。
有可能这样做吗?
编辑:需要超时
将 asyncio.wait
与 return_when
关键字一起使用:
# directly passing coroutine objects in `asyncio.wait`
# is deprecated since py 3.8+, wrapping into a task
blabla_task = asyncio.create_task(blabla())
blublu_task = asyncio.create_task(blublu())
done, pending = await asyncio.wait(
{blabla_task, blublu_task},
return_when=asyncio.FIRST_COMPLETED
)
# do something with the `done` set
我的代码有两个函数:
async def blabla():
sleep(5)
和
async def blublu():
sleep(2)
asyncio.wait_for 据我所知可以等待这样一个函数:
asyncio.wait_for(blublu(), timeout=6)
或 asyncio.wait_for(blublu(), timeout=6)
我不想做的是让 asyncio 等待它们两个,如果其中一个结束得更快,则继续进行而不等待第二个。
有可能这样做吗?
编辑:需要超时
将 asyncio.wait
与 return_when
关键字一起使用:
# directly passing coroutine objects in `asyncio.wait`
# is deprecated since py 3.8+, wrapping into a task
blabla_task = asyncio.create_task(blabla())
blublu_task = asyncio.create_task(blublu())
done, pending = await asyncio.wait(
{blabla_task, blublu_task},
return_when=asyncio.FIRST_COMPLETED
)
# do something with the `done` set