【游戏编程扯淡精粹】Python asyncio
【游戏编程扯淡精粹】Python asyncio
asyncio - 廖雪峰的官方网站
Python 3.4
- asyncio提供了完善的异步IO支持;
- 异步操作需要在coroutine中通过yield from完成;
- 多个coroutine可以封装成一组Task然后并发执行。
Python 3.5+
请注意,async和await是针对coroutine的新语法,要使用新的语法,只需要做两步简单的替换:
- 把@asyncio.coroutine替换为async;
- 把yield from替换为await。
asyncio — 异步 I/O — Python 3.10.2 文档
asyncio 提供一组 高层级 API 用于:
- 并发地 运行 Python 协程 并对其执行过程实现完全控制;
- 执行 网络 IO 和 IPC;
- 控制 子进程;
- 通过 队列 实现分布式任务;
- 同步 并发代码;
此外,还有一些 低层级 API 以支持 库和框架的开发者 实现:
- 创建和管理 事件循环,以提供异步 API 用于 网络化, 运行 子进程,处理 OS 信号 等等;
- 使用 transports 实现高效率协议;
- 通过 async/await 语法 桥接 基于回调的库和代码。
小结
- aysncio异步IO库解决IO密集型程序的阻塞问题
- 反过来说,不能解决计算密集型程序的问题
- 实际上,Python因为GIL本身也不能解决
- Python使用协程和消息循环实现asyncio
- await标记异步IO操作,async标记包含异步IO操作的函数为协程,协程可以被加入消息循环处理
- 注意Python版本3.5+
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!