协程的概念

协程

背景

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

概念

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

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

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

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

实现协程的必备条件

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

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

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

批判性看待协程

优点

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

缺点

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

为什么要使用协程

什么时候使用协程

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

转载于:https://www.cnblogs.com/marklijian/p/11575234.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值