首页 > 编程语言 > 详细

python 并发专题(十二):基础部分补充(四)协程

时间:2020-04-28 20:34:27      阅读:48      评论:0      收藏:0      [点我收藏+]
  • 相关概念:

    协程:一个线程并发的处理任务
    串行:一个线程执行一个任务,执行完毕之后,执行下一个任务
    并行:多个CPU执行多个任务,4个CPU执行4个任务
    并发:一个CPU执行多个任务,看起来像是同时执行
    并发真正的核心/本质:切换并且保持状态
    多线程的并发:3个线程处理10个任务,如果线程1处理的这个任务,遇到阻塞,cpu被操作系统切换到另一个线程,
    
  • 应用示例:单个CPU:10个任务,让你给我并发的执行这10个任务

    方式一:开启多进程并发执行,操作系统+保持状态
    方式二:开启多线程并发执行,操作系统+保持状态
    方式三:开启协程并发的执行,自己的程序把控着CPU在多个任务之间来回的切换+保持状态
    方式三的详细解释:协程切换的速度非常快,蒙蔽操作系统的眼睛,让操作系统认为CPU一直在运行这个线程(协程)
    
  • 使用协程的原因:

    1. 开销小
    2. 运行速度快
    3. 协程会长期霸占CPU只执行我程序里边的所有任务
    
  • 协程的特点:

    1. 必须在只有一个单线程里实现并发
    2. 修改共享数据不需加锁
    3. 用户程序里自己保存多个控制流的上下文栈(保持状态)
    4. 附加:一个协程遇到IO操作自动切换到其它协程
    
  • 工作中应用协程:

    一般在工作中我们都是进程+线程+协程的方式来实现并发,以达到最好的并发效果,如果是4核的cpu,一般起5个进程,每个进程中20个线程(5倍cpu数量),每个线程可以起500个协程,大规模爬取页面的时候,等待网络延迟的时间的时候,我们就可以用协程去实现并发。
  •  并发数量 = 5 * 20 * 500 = 50000个并发,这是一般一个4cpu的机器最大的并发数。nginx在负载均衡的时候最大承载量就是5w个

python 并发专题(十二):基础部分补充(四)协程

原文:https://www.cnblogs.com/qiu-hua/p/12796565.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!