最近我想在运行其他任务时在后台运行一些异步任务,但我认为代码不够“Pythonic”:
task = asyncio.create_task(long_task())
await short_task()
await task
所以,我将其改进得更加符合Python风格:
@asynccontextmanager
async def run_in_background(coro):
task = asyncio.create_task(coro)
yield task
await task
async def main():
async with run_in_background(long_task()):
await short_task()
这样的东西已经存在了吗?如果不存在,那么相对于现有的方式,这是否被认为是更Pythonic还是不太Pythonic?
with open("file")
和file.open
file.close
是一样的。 - Tom Gringauzyield
。无论如何,我们中有些人更喜欢Curio的方式。 :-) - Keith