码迷,mamicode.com
首页 > 其他好文 > 详细

协程的概念

时间:2019-09-23 22:36:05      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:系统   阻塞   利用   保存   概念   协程   python   一个   代码实现   

协程

背景

python中的多线程使用的是操作系统中的原生线程

概念

在单进程的条件下实现并发

操作系统无法感知到单线程中的协程之间的切换

因为操作系统中并没有协程的概念,

协程是程序员用代码实现的一种并发

实现协程的必备条件

基于多道技术,我们知道了线程间的切换需要实现空间和时间上的复用,即:保存状态+切换

当程间遇到阻塞时进行切换才是有意义的

如果遇到计算时还切换,只会徒增切换时间

批判性看待协程

优点

  • 协程
    • 协程切换是不经过操作系统的,节省了大量的时间
    • 是使得原来需要阻塞切换CPU的地方,切换到了其他任务上,大大减少了切换CPU的次数
    • PS:最理想的状态是,每次操作系统分配的时间片到了再切换到其他线程
  • 多线程
    • 切换不仅经过操作系统,还要和系统中的其他线程竞争

缺点

  • 对比多线程
    • 如果有一个阻塞没有捕获到,即在阻塞时没有切换到其他任务,那么这个阻塞将会变成所有任务的阻塞
    • 而多线程会自动IO切换,没有相上面的顾虑
  • 对比多进程
    • 和多线程一样,无法使用CPU的多核优势

为什么要使用协程

什么时候使用协程

  • 协程配合多进程多线程使用,大大提高了我们程序对CPU的利用率

协程的概念

标签:系统   阻塞   利用   保存   概念   协程   python   一个   代码实现   

原文地址:https://www.cnblogs.com/marklijian/p/11575234.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!