当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python contextlib.aclosing用法及代码示例


用法:

class contextlib.aclosing(thing)

返回一个异步上下文管理器,该管理器在块完成时调用 thingaclose() 方法。这本质上相当于:

from contextlib import asynccontextmanager

@asynccontextmanager
async def aclosing(thing):
    try:
        yield thing
    finally:
        await thing.aclose()

值得注意的是,aclosing() 支持在异步生成器因break 或异常而提前退出时对它们进行确定性清理。例如:

from contextlib import aclosing

async with aclosing(my_generator()) as values:
    async for value in values:
        if value == 42:
            break

这种模式确保生成器的异步退出代码在与其迭代相同的上下文中执行(以便异常和上下文变量按预期工作,并且退出代码在它所依赖的某些任务的生命周期之后不会运行)。

3.10 版中的新函数。

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 contextlib.aclosing。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。