python-并行&并发|同步&异步|异步阻塞&异步阻塞&同步阻塞&同步非阻塞

并行&并发概念

(并行&并发)学习这两个概念首先明确这两个概念的区别,这两个概念的区别贯穿本文,两个是不同的概念

并行:并行是解决了什么事(ing),一段时间或则同一时刻做了几件事

并发:并发是有多少事要解决(will be doing),一段时间或则同时时刻有多少事要做

注释:并行是解决并发的一种手段

demo:

  并行:高速双向4车道,可以肩并肩同时行驶8辆车(解决了8辆车同时运行的事),他们在自己的车道上互不影响  

  并发:火车站春运与平时对比,平时人少(并发量就比较小),春运人很多(并发量就很大),乘客要乘车,客运站要解决乘车的问题(有多少乘客乘车要解决,就是有多少问题需要解决)

并行的实现方法:

  1:python 提供的标准库threading, multiprosessing

  2:第三方celery的异步任务

并发的解决方案:

  注释:解决高并发没有一种模板化套路就能解决的,所有的高并发解决都是结合实际业务多种方法的综合版

  1:队列(缓冲区) Queue:队列、LifoQueue:先进先出队列、PriorityQueue:优先级队列

    注释:队列天然的就形成了一个缓冲地带,就是缓冲区.队列也是程序中的生产者消费者模型

  2:争抢 谁先占用cpu谁先执行,其他的等待,多核CPU需要解决资源竞争的问题

    注释:解决资源竞争要使用锁机制

  3:预处理  将代码片的处理结果预先处理好,存放于某个位置,当并发的时候不用执行代码片而直接获取结果

    注释: 预处理也是程序中常用的缓存,web项目中动态页面静态化

  4: 并行编程(水平扩展) 程序的最终执行是由进程中的线程去执行的,每个进程在没有受到计算机任务调度的情况下是独占一个cpu核的,从这个理解出发,并行解决高并发可以使用多服务器,多进程,多线程来处理

    注释:这个概念也就涉及到部署中多机的、分布式的部署方法

  5: 提速(垂直扩展) 提升单个cpu性能,单台服务器替换成更多的cpu核数,更换固态硬盘,云服务就增加带宽

  6:消息中间件 究竟什么是程序,程序等于数据结构+算法,算法包括1:可接收的参数 2:可接受的时间范围内返回的接收到参数的处理结果,最终明白,程序就是处理请求和返回结果的,消息中间件中的消息指的就是请求,他干了什么是呢,就是在这个请求还没有到达程序入口(API)之前,先将消息进行一个缓冲.

    注释:python常见的消息中间件 RabbitMQ、ActiveMQ、RocketMQ、kafka

  7:就近原则 像BAT这样的大公司,服务器分布很多地区。像你在深圳打游戏你选择华北的服务器,肯定比当地服务器丢包率高一个道理,就近原则可以缩短网络IO的时间

同步&异步概念

待续……

异步阻塞&异步阻塞&同步阻塞&同步非阻塞

待续……

猜你喜欢

转载自www.cnblogs.com/wjj-/p/11801790.html