了解asyncio高级api索引

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
应用实时监控服务-应用监控,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 【6月更文挑战第27天】本文是`asyncio` 高级API概览:运行异步任务如`run()`, `create_task()`;等待机制如`gather()`, `wait_for()`, `shield()`;任务管理如`current_task()`, `all_tasks()`;队列和子进程功能;同步原语包括锁、事件和信号量。示例中涉及`sleep()`, `gather()`, `wait_for()`, 子进程创建及同步异常`TimeoutError`和`CancelledError`。查阅官方文档以获取详细信息和示例代码。

1 高层 API索引

列举了所有能用于 async/wait 的高层级asyncio API 集。运行异步任务如run(), create_task();等待机制如gather(), wait_for(), shield();任务管理如current_task(), all_tasks();队列和子进程功能;同步原语包括锁、事件和信号量。示例中涉及sleep(), gather(), wait_for(), 子进程创建及同步异常TimeoutError和`CancelledError
treeoflife6.png

2 任务

运行异步程序,创建Task对象,等待多件事运行超时的公共集。

run()

创建事件循环,运行一个协程,关闭事件循环。

create_task()

启动一个asyncio的Task对象。

await sleep()

休眠几秒。

await gather()

并发执行所有事件的调度和等待。

await wait_for()

有超时控制的运行。

await shield()

屏蔽取消操作

await wait()

完成情况的监控器

current_task()

返回当前Task对象

all_tasks()

返回事件循环中所有的task对象。

Task

Task对象

to_thread()

在不同的 OS 线程中异步地运行一个函数。

run_coroutine_threadsafe()

从其他OS线程中调度一个协程。

for in as_completed()

用 for 循环监控完成情况。

3 例子

使用 asyncio.gather() 并行运行.
使用 asyncio.wait_for() 强制超时.

撤销协程.

    asyncio.sleep() 的用法.

请主要参阅 协程与任务文档.

4 队列集

队列集被用于多个异步Task对象的运行调度,实现连接池以及发布/订阅模式。

先进先出队列

Queue

优先级队列:

  PriorityQueue

后进先出队列:

LifoQueue

使用 asyncio.Queue 在多个并发任务间分配工作量.

5 子进程集

用于生成子进程和运行shell命令的工具包。

创建一个子进程:

await create_subprocess_exec()

运行一个shell命令:

await create_subprocess_shell()

比如使用 它执行一个shell命令.
请参阅 子进程 APIs 相关文档.

6 同步

能被用于Task对象集的,类似线程的同步基元组件。

互斥锁:

Lock

事件对象:

Event

条件对象:

Condition

信号量:

Semaphore

有界的信号量:

BoundedSemaphore

7 小结

使用异步库的例子

asyncio.Event 的用法.

请参阅asyncio文档 synchronization primitives.

异常

asyncio.TimeoutError

类似 wait_for() 等函数在超时时候被引发。请注意 asyncio.TimeoutError 与内建异常 TimeoutError 无关。

asyncio.CancelledError

当一个Task对象被取消的时候被引发。请参阅 Task.cancel()。
在取消请求发生的运行代码中如何处理CancelledError异常.

请参阅完整的 asyncio 专用异常 列表.

本文代码例子:

    https://docs.python.org/zh-cn/3/library/asyncio-future.html#asyncio-example-future
目录
相关文章
|
JavaScript 前端开发 API
前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— JS进阶(三)
前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— JS进阶(三)
689 1
|
Java API 数据中心
百炼平台Java 集成API上传文档到数据中心并添加索引
本文主要演示阿里云百炼产品,如何通过API实现数据中心文档的上传和索引的添加。
753 4
|
API 流计算 知识图谱
Flink教程(15)- Flink高级API(并行度)
Flink教程(15)- Flink高级API(并行度)
285 0
|
JSON JavaScript 前端开发
前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— JS进阶(四)完结撒花✿✿ヽ(°▽°)ノ✿
前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— JS进阶(四)完结撒花✿✿ヽ(°▽°)ノ✿
674 0
|
JavaScript 前端开发 API
前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— JS进阶(二)
前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— JS进阶(二)
549 0
|
机器学习/深度学习 API TensorFlow
TensorFlow的高级API:tf.keras深度解析
【4月更文挑战第17天】本文深入解析了TensorFlow的高级API `tf.keras`,包括顺序模型和函数式API的模型构建,以及模型编译、训练、评估和预测的步骤。`tf.keras`结合了Keras的易用性和TensorFlow的性能,支持回调函数、模型保存与加载等高级特性,助力提升深度学习开发效率。
|
Java API
SpringBoot【集成ElasticSearch 01】2种方式的高级客户端 RestHighLevelClient 使用(依赖+配置+客户端API测试源码)
SpringBoot【集成ElasticSearch 01】2种方式的高级客户端 RestHighLevelClient 使用(依赖+配置+客户端API测试源码)
513 1
|
机器学习/深度学习 人工智能 API
人工智能应用工程师技能提升系列2、——TensorFlow2——keras高级API训练神经网络模型
人工智能应用工程师技能提升系列2、——TensorFlow2——keras高级API训练神经网络模型
159 0
|
存储 API 数据安全/隐私保护
2021年最新最全Flink系列教程__Flink高级API(四)
2021年最新最全Flink系列教程__Flink高级API(四)
95 0
|
消息中间件 API 数据安全/隐私保护
2021年最新最全Flink系列教程__Flink高级API(三)
2021年最新最全Flink系列教程__Flink高级API(三)
81 0

热门文章

最新文章