asyncio
作用
- 提供了对携程的支持
- 非阻塞: 协程允许在等待异步操作的同时执行其他任务,而不会阻塞整个程序。
- 轻量: 相对于线程和进程,协程的开销较小,因为它们在单线程中执行。
- 使用
async/await
语法: async def
声明协程函数,await
用于等待异步操作的完成。
- 事件循环: 协程需要在事件循环中运行,asyncio模块提供了事件循环的支持。
协程和线程(可以理解为一个是用户级,一个是系统级)
- 携程
- 在携程中,程序员编写的代码负责主动让出CPU的控制权。
- 属于轻量级的线程
- 线程
- 操作系统控制CPU的控制权(单核CPU执行多个进程就是这样的)
携程的定义和使用
自动获取当前线程的event_loop
| |
| async def show_msg() -> None: |
| print('show') |
| await asyncio.sleep(0.8) |
| print('msg') |
| |
| |
| |
| if __name__ == "__main__": |
| |
| asyncio.run(show_msg()) |
| |
手动获取当前的 event_loop
| import asyncio |
| |
| async def main(): |
| |
| loop = asyncio.get_event_loop() |
| |
| |
| task = loop.create_task(show_msg()) |
| |
| |
| await task |
| |
| |
| asyncio.run(main()) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步