Python之路--Python基础12--并发编程之协程

Posted tuyereiot

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之路--Python基础12--并发编程之协程相关的知识,希望对你有一定的参考价值。

一、协程介绍

  本节的主题是基于单线程来实现并发,即只用一个主线程(很明显可利用的cpu只有一个)情况下实现并发,为此我们需要先回顾下并发的本质:切换+保存状态。cpu正在运行一个任务,会在两种情况下切走去执行其他的任务(切换由操作系统强制控制),一种情况是该任务发生了阻塞,另外一种情况是该任务计算的时间过长或有一个优先级更高的程序替代了它。

技术分享图片

 

ps:在介绍进程理论时,提及进程的三种执行状态,而线程才是执行单位,所以也可以将上图理解为线程的三种状态 

    一:其中第二种情况并不能提升效率,只是为了让cpu能够雨露均沾,实现看起来所有任务都被“同时”执行的效果,如果多个任务都是纯计算的,这种切换反而会降低效率。为此我们可以基于yield来验证。yield本身就是一种在单线程下可以保存任务运行状态的方法,我们来简单复习一下:

 

以上是关于Python之路--Python基础12--并发编程之协程的主要内容,如果未能解决你的问题,请参考以下文章

Python之路--Python基础10--并发编程

Python之路

Python之路--Python基础

零基础Python学习路线,小白的进阶之路!

Python开发基础之路

零基础Python学习路线,小白的进阶之路!