基本的上下文管理器
需要定义:
class ContextM:
def __enter__():
dosomethings()
def __exit__():
dosometings()
class AsyncContextM:
async def __aenter__():
await dosometings()
async def __aexit__():
await dosometings()
调用时使用with ContextM()或async with AsyncContextM
ContextManager
Python内置的一个很方便的生成上下文管理器的装饰器
from contextlib import contextmanager, asynccontextmanager
@contextmanager
def context():
dosomethings_like_enter()
yield
dosomethings_like_exit()
@asynccontextmanager
async def async_context():
await dosometings_like_aenter()
yield
await dosometings_like_aexit()
以同样的方式调用即可