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

1 asyncio模块

1.1核心概念

1.1.1协程

协程是一种特殊的函数,可以在执行过程中暂停,也可以稍后恢复执行。协程通过async关键字来指定。

await关键字:如果想要立即执行,那调用协程的时候,前面加上await关键字。只想创建协程对象稍后执行的话不用加await

1.1.2 事件循环

1.1.3 任务

任务是对协程的封装

封装方式:asyncio.create_task(协程)

例子

async def main():task = asyncio.create_task(say_hello())#创建任务,返回协程对象taskawait task#执行任务

1.1.4 并发

单cpu,在不同时间段执行两个不同的任务

1.1.5 并行

多个cpu同时运行

1.1.6 事件循环

事件循环是 asyncio 的核心组件,负责调度和执行协程。它不断地检查是否有任务需要执行,并在任务完成后调用相应的回调函数

async def main():await say_hello()asyncio.run(main())#创建一个事件循环

1.2 基本概念

1.2.1 运行协程

要运行一个协程,你可以使用 asyncio.run() 函数。它会创建一个事件循环,并运行指定的协程

import asyncioasync def main():print("Start")await asyncio.sleep(1)print("End")asyncio.run(main())

1.2.2 并发执行多个任务

使用 asyncio.gather() 函数并发执行多个协程,并等待它们全部完成。

import asyncioasync def task1():print("Task 1 started")await asyncio.sleep(1)print("Task 1 finished")async def task2():print("Task 2 started")await asyncio.sleep(2)print("Task 2 finished")async def main():await asyncio.gather(task1(), task2())asyncio.run(main())

1.2.3 超时控制

使用 asyncio.wait_for() 函数为协程设置超时时间。如果协程在指定时间内未完成,将引发 asyncio.TimeoutError 异常

import asyncioasync def long_task():await asyncio.sleep(10)print("Task finished")async def main():try:await asyncio.wait_for(long_task(), timeout=5)except asyncio.TimeoutError:print("Task timed out")asyncio.run(main())

http://www.xdnf.cn/news/539137.html

相关文章:

  • Ubuntu——配置静态IP
  • 基于Transformers与深度学习的微博评论情感分析及AI自动回复系统
  • 【C++】模版(1)
  • 基于不完美维修的定期检测与备件策略联合优化算法matlab仿真
  • megatron——EP并行
  • 商标名称起好后,尽快申请注册确权!
  • 【cursor疑惑】cursor续杯后使用agent对话时,提示“需要pro或商业订阅的用户才能使用“
  • 电路研究9.3.6——合宙Air780EP中的AT开发指南:FTP 应用指南
  • np.r_的用法
  • 代码随想录 算法训练 Day6:哈希表part1
  • Mybatis的标签:if标签、where标签、choose,when标签、set标签
  • 【vs2022的C#窗体项目】打开运行+sql Server改为mysql数据库+发布
  • React学习———Immer 和 use-immer
  • 编译zstd
  • 《垒球百科全书》垒球是什么·棒球1号位
  • `asyncio.gather()` 是什么
  • 深度强化学习框架DI-engine
  • Java大师成长计划之第27天:RESTful API设计与实现
  • 算法竞赛 Java 高精度 大数 小数 模版
  • MySQL故障排查域生产环境优化
  • IIR 巴特沃斯II型滤波器设计与实现
  • React Contxt详解
  • 孤立森林和随机森林主要区别
  • Java实现:如何在文件夹中查找重复文件
  • 如何从容应对面试?
  • vi实时查看日志
  • UA 编译和建模入门教程(zhanzhi学习笔记)
  • 基于大模型的脑出血全流程预测系统技术方案大纲
  • 物联网安全技术的最新进展与挑战
  • 深入理解pip:Python包管理的核心工具与实战指南