python 面试题16 并发&并行 任务&多任务 顺序执行

做并发编程之前,必须首先理解什么是并发?,什么是并行?,什么是并发编程?,什么是并行编程?
并发是指一个处理器同时处理多个任务。
并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。
并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能。

本文将用几个浅显易懂的例子,来说明一下什么是并发和并行。

1、任务与多任务
什么是任务呢?
其实很简单,在我们生活中,比如我今天要学一首歌,要在操场上散步1000米,然后还要向老师电话汇报研究成果,这是今天的三个任务。

在编程语言中,实现某一个任务的一般单元就是“函数”。

2、顺序执行
上面三个任务,如果在一般的单线程执行的程序里面,分别定义三个函数,然后依次顺序执行,即执行完第一个在执行第二个,然后执行第三个,即我先把一首歌学会,然后在操场上散步1000米,然后再给老师汇报,这样做效率低下。
我们可以有一个更加高效的办事方法,
我在散步的时候,顺便打电话给老说汇报一下今天的成果,然后边散步边听歌,便跟着学,这样效果就高很多,这里的是“并行执行”。

3、并发和并行的一些理解——concurrency and parallellism

并发(concurrency),并行(parallellism),可见他们的确是有区别的。
下面通过一些具体的例子进行说明。

例子一:

假设一个有三个学生需要辅导作业,帮每个学生辅导完作业是一个任务

顺序执行:老师甲先帮学生A辅导,辅导完之后再取给B辅导,最后再去给C辅导,效率低下 ,很久才完成三个任务

并发:老师甲先给学生A去讲思路,A听懂了自己书写过程并且检查,而甲老师在这期间直接去给B讲思路,讲完思路再去给C讲思路,让B自己整理步骤。这样老师就没有空着,一直在做事情,很快就完成了三个任务。

与顺序执行不同的是,顺序执行,老师讲完思路之后学生在写步骤,这在这期间,老师是完全空着的,没做事的,所以效率低下。

并行:直接让三个老师甲、乙、丙三个老师“同时”给三个学生辅导作业,也完成的很快。

例子二:

顺序执行:你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。

并发:你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。

并行:你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并

理解:

解释一:并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。
解释二:并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。
解释三:在一台处理器上“同时”处理多个任务,在多台处理器上同时处理多个任务。如hadoop分布式集群

普通解释:
并发:交替做不同事情的能力
并行:同时做不同事情的能力
图解:
这里写图片描述
这里写图片描述
专业术语:
并发:不同的代码块交替执行
并行:不同的代码块同时执行

这里写图片描述
并发和并行的意义:

并发和并行都可以处理“多任务”,二者的主要区别在于是否是“同时进行”多个的任务。

但是 涉及到任务分解(有先后依赖的任务就不能做到并行)、任务运行(可能要考虑互斥、锁、共享等)、结果合并

参考
https://blog.csdn.net/qq_27825451/article/details/78850336
https://blog.csdn.net/java_zero2one/article/details/51477791

猜你喜欢

转载自blog.csdn.net/weixin_41853490/article/details/81287978