【游戏编程扯淡精粹】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 @ 2022-02-21 01:29  zoloypzuo  阅读(48)  评论(0)    收藏  举报