当前位置: 首页 > wzjs >正文

关于建设网站的书本婚礼网站有哪些

关于建设网站的书本,婚礼网站有哪些,排名公式,建筑合同书协议书在 Python 中,上下文管理器(Context Manager) 是一种用于管理资源获取与释放的结构,核心作用是自动化资源的进入和退出(常用于文件操作、数据库连接、线程锁、事务处理等)。它的本质是定义好 enter / exit&…

在 Python 中,上下文管理器(Context Manager) 是一种用于管理资源获取与释放的结构,核心作用是自动化资源的进入和退出(常用于文件操作、数据库连接、线程锁、事务处理等)。它的本质是定义好 enter / exit(同步)或 aenter / aexit(异步) 方法。

1. 基本概念

同步上下文管理器(with)

class MyResource:def __enter__(self):print("获取资源")return selfdef __exit__(self, exc_type, exc_val, exc_tb):print("释放资源")with MyResource() as r:print("处理中")

输出:

获取资源
处理中
释放资源

异步上下文管理器(async with)

适用于异步资源(如:异步数据库、aiofiles、aiohttp 等):

class MyAsyncResource:async def __aenter__(self):print("异步获取资源")return selfasync def __aexit__(self, exc_type, exc_val, exc_tb):print("异步释放资源")async with MyAsyncResource() as r:print("异步处理中")

2. contextlib 模块

contextlib 是 Python 标准库中的一个实用工具模块,专门用于简化上下文管理器(context manager)的创建和使用。

主要功能

  1. 简化上下文管理器的创建 - 无需编写完整的类实现 enterexit 方法
  2. 提供装饰器和工具函数 - 用于常见上下文管理场景
  3. 支持可重用的上下文管理器

核心组件

1. @contextmanager 装饰器

基本用法:

from contextlib import contextmanager@contextmanager
def 管理资源(*args, **kwargs):# 这部分相当于 __enter__ 方法资源 = 获取资源(*args, **kwargs)try:yield 资源  # 在这里返回资源给as变量finally:# 这部分相当于 __exit__ 方法释放资源(资源)# 使用方式
with 管理资源() as 资源:print(资源)

示例:

from contextlib import contextmanager@contextmanager
def open_file(path):f = open(path, 'r')try:yield ffinally:f.close()with open_file("test.txt") as f:print(f.read())

2. @asynccontextmanager(异步)

基本用法:

from contextlib import asynccontextmanager@asynccontextmanager
async def async_resource_manager():# 初始化部分 (相当于 __aenter__)resource = await acquire_resource_async()try:yield resource  # 在这里暂停,将资源提供给 with 块finally:# 清理部分 (相当于 __aexit__)await release_resource_async(resource)# 使用方式
async def main():async with async_resource_manager() as res:await do_something_with(res)

特点:

  • 专为异步代码设计:与普通 @contextmanager 不同,它处理的是异步上下文协议 (aenter/aexit)
  • 必须用 async with 调用:不能与普通 with 语句混用
  • 支持异步清理:finally 块中可以执行 await 操作

示例:

from contextlib import asynccontextmanager
import aiofiles@asynccontextmanager
async def open_file_async(path):f = await aiofiles.open(path, 'r')try:yield ffinally:await f.close()async def run():async with open_file_async("test.txt") as f:content = await f.read()

3. 高级实践:FastAPI 启动生命周期封装

from fastapi import FastAPI
from contextlib import asynccontextmanager
from motor.motor_asyncio import AsyncIOMotorClient@asynccontextmanager
async def lifespan(app: FastAPI):app.state.mongo = AsyncIOMotorClient("mongodb://localhost:27017")["mydb"]yieldapp.state.mongo.client.close()app = FastAPI(lifespan=lifespan)
http://www.dtcms.com/wzjs/556137.html

相关文章:

  • wordpress无法管理站点绿派网站建设
  • 怎么制作网站模版深圳福田车公庙网站建设
  • wap网站要花多少钱做微课的网站
  • 免费网站建设免费咨询专业网站设计师去哪找
  • 海门住房和城乡建设部网站2018网站开发
  • 一起做网店 网站打不开广东省白云区邮政编码
  • 长沙网站开发公wordpress无法跳转正确页面
  • 教学网站模板下载wordpress 的导航插件
  • 柳州市建设投资开发公司网站商城网站项目策划书
  • 中企动力做的网站经常打不开网页设计ui设计培训
  • 如何做拍卖网站wordpress伪静态设置
  • 沙井网站建设公司东坑镇网站仿做
  • 凡科网站后台在哪里.网贷网站建设
  • 做网站南京进一步加强区门户网站建设管理办法
  • 厦门 微网站制作百度包年推广网站建设
  • 新公司做网站和域名网站云解析域名解析
  • 原创设计师品牌网站开了外网网站打不开
  • 网站建设毕业答辩ppt江苏电商网站开发
  • 建设小网站教程网站空间申请开通
  • 郑州网站建设十大公司国内做网站网站风险大吗
  • 怎么样注册自己的网站如何宣传商务网站
  • 网站建设推广选哪家博罗网站建设哪家好
  • 巢湖建设网站台州百度推广优化
  • 做旅游网站需要什么网站后台 添加用户
  • 有哪些网站可以做视频公司注册查询官网入口
  • flash网站源码免费下载百度官方认证
  • 用服务器做网站需要购买域名吗广告传媒公司名称
  • 新乡建设公司网站微信网页版网址
  • 网站服务器有问题怎么办啊网站开发需要什么软件
  • 网站开发国内外研究动态外贸关键词网站