【游戏编程扯淡精粹】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+
posted @   zoloypzuo  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示