并发(concurrency)和它的表现形式之一并行处理(parallel processing)是就计算机领域开发过程中经常讨论的话题之一。今天,博主就谈谈自己对这两个名词的理解吧!
并发概念:
在1976年Leslie Lamportfa发表的论文中指出了。如果说两个事件互相不影响,则两个事件是并发的。通过推断程序,算法或者问题中事件,我们可以说,如果他们可以完全或者部分分解为顺序无关的组件单位,则事件是并发的。可以彼此独立的处理这些单元,并且处理的顺序不会最终影响最终的结果。
在计算机领域发开过程中,并发具体指的就是应用能够交替执行不同的任务,并发有点类似于多线程的原理,多线程并非是同时执行多个任务。如果你开多个线程执行,,其实是计算机的操作系统通过时间片轮转法等算法调度执行任务,是在以我们无法感觉到的速度,在切换不同的任务程序。让我们误以为是"同时执行效果",但其实并不是这样的。
并行的概念
指应用能够同时执行不同的任务,例:吃饭的时候可以边吃饭边打电话,这两件事情可以同时执行
并行和并发的区别点就在于,一个是交替执行,一个是同时执行。
在我们Python开发过程中,处理高并发和并行有三个常见又重要的解决模型方法
- 多线程 (multithreading)
- 多进程 (multiprocessing)
- 异步编程(asynchronous programming)
在开发过程中,经常会遇到大规模访问量的访问,当你需要同时满足多个用户或者软件代理请求时,会遇到下面的问题,:
- 处理作业的时间受单个处理单元(单机,CPU内核等)性能的限制