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

【协程coroutine】async await

asyncawait 是 Python 3.5 及以上版本中引入的用于编写异步代码的关键词。它们帮助开发者编写出简洁且高效的异步 IO 操作,比如网络请求、文件读写等,避免阻塞主线程。

以下是asyncawait 的简单介绍和使用示例:

1. async 关键词

async 用于定义协程(coroutine),协程是一种能在执行过程中暂停并在需要时继续执行的函数。带有 async 关键字的函数被称为异步函数或协程函数。

import asyncioasync def my_coroutine():print("Hello")await asyncio.sleep(1)print("World")# 调用协程函数不会立即执行,需要用`await`或在事件循环中运行

2. await 关键词

await 用于在协程中等待一个异步操作完成。它只能在async定义的函数中使用。

async def say_hello():print("Hello")await asyncio.sleep(1)  # 模拟异步操作print("World")# 像这样直接运行不会有输出
say_hello()

3. 使用事件循环执行协程

为了执行协程,需要将它们放到事件循环(event loop)中运行。Python 提供了 asyncio.run 方法来简化这个过程。

import asyncioasync def say_hello():print("Hello")await asyncio.sleep(1)print("World")# 运行协程函数
asyncio.run(say_hello())

当你运行上述代码时,输出将会是:

Hello
<暂停1秒>
World

4. 常见用法与示例

假设你想并发执行多个异步操作,比如抓取网页内容。可以使用 asyncawait 来达到并发执行的效果。

import asyncioasync def fetch_data(delay, data):print(f"Fetching {data} with delay {delay}s")await asyncio.sleep(delay)print(f"Fetched {data}")async def main():tasks = [fetch_data(2, "data1"),fetch_data(1, "data2"),fetch_data(3, "data3")]await asyncio.gather(*tasks)asyncio.run(main())

在这个例子中,asyncio.gather 用来并发地执行多个协程。协程 fetch_data 会并发执行,而不是顺序执行,大大提高了效率。

总结

  • async 用于定义异步函数。
  • await 在异步函数中等待另一个异步操作完成。
  • 使用 asyncio.run 或 事件循环来调度执行协程。

掌握 asyncawait 能大大提升你在处理 IO 密集型任务,如网络请求和文件操作时的代码效率和结构清晰度。

相关文章:

  • 互联网大厂Java求职面试:AI集成与云原生架构设计
  • 如何查看电脑显卡配置参数 一文读懂
  • 机器学习——逻辑回归ROC练习
  • 在 Ubuntu 系统中,挂起(Suspend)和休眠(Hibernate)
  • CAN报文逆向工程
  • 四步定位linux内核oops原因
  • dify 部署后docker 配置文件修改
  • 如何在Idea中编写Spark程序并运行
  • 缓存雪崩:高并发系统中的隐形杀手与应对策略
  • XSS 攻击:深入剖析“暗藏在网页中的脚本“与防御之道
  • 代码随想录算法训练营 Day39 动态规划Ⅶ 打家劫舍
  • ChromaDB调用BGE模型的两种实践方式
  • vscode 安装插件
  • java算法的核心思想及考察的解题思路
  • 制作一款打飞机游戏39:鼠标控制
  • 【大模型系列】使用fastapi为langchain应用快速对外提供restful api
  • 学习Linux的第四天
  • nginx 上传文件,413 request entity too large
  • 使用Milvus向量数据库构建具有长期记忆的对话机器人
  • 从人脸扫描到实时驱动,超写实数字分身技术解析
  • 上海“量子城市”先导应用场景落地曹杨社区,提供哪些服务?
  • 2025年4月份CPI环比由降转涨,核心CPI涨幅稳定
  • 云南省安委会办公室:大理州安全生产形势比较严峻,事故总量一直居高不下
  • 视频丨习近平同普京在主观礼台出席红场阅兵式
  • 稳住外贸基本盘,这个中部大省出手了
  • 丹麦召见美外交官,强调“不能容忍”美在格陵兰岛间谍活动