Python 协程Coroutine

1. 协程是什么?

1.1 定义

  • 协程是一种用户级轻量级线程。
  • 协程可以在执行过程中暂停,并在稍后恢复执行。
  • 协程之间的切换是由程序员控制的,而不是由操作系统调度。

1.2 特点

  • 非阻塞:协程可以在等待 I/O 操作完成时让出控制权,从而避免阻塞。
  • 并发:多个协程可以同时运行,但实际的并发执行依赖于事件循环(Event Loop)。
  • 资源友好:协程比线程更轻量级,占用的系统资源更少。

1.3 备注

  • 核心数量: 十核心
  • 线程数量: 十六线程
  • 二级缓存: 9.5MB
  • 三级缓存: 20MB
  • 热设计功耗(TDP): 125W
  • 最大加速功耗(MTP): 150w

在CPU的参数表里, 可以看到”核心数量” 和 “线程数量” 这两个参数,  而没有”协程数量”。由此可知, “协程之间的切换是由程序员控制的,而不是由操作系统调度”。而多进程和多线程是由操作系统和CPU提供的。

 

1.4 协程的工作原理

1.4.1 事件驱动

协程通常在一个事件循环(Event Loop)中运行。事件循环负责监听各种事件(如 I/O 完成、定时器到期等),并在事件发生时调度相应的协程。

 

1.4.2 异步编程

协程使用 await 关键字来挂起当前协程的执行,等待异步操作完成。这允许其他协程在当前协程等待期间继续执行。通过这种方式,协程可以高效地利用单线程的时间片,避免阻塞,提高并发性能。

 

 

本站文章除单独注明外均为原创,本文链接https://bowmanjin.com/1097,未经允许请勿转载。

0

评论0

请先

没有账号? 注册  忘记密码?