• python3 并发编程--并行与并发


    很多人不是特别明白并发编程和并行编程的区别所在,有很多人很容易搞混淆,觉得二者近似相等,本文将用几个浅显易懂的例子,来说明一下什么是并发和并行。

    1、任务与多任务

           关于什么是进程,什么是线程,这里不打算多说,关于每一种开发语言的多线程处理技术语法上有所区别,原理很多类似,可以查阅相关的参考书。什么是任务呢?其实很简单,在我们生活中,比如我今天要学一首歌,要在操场上散步1000米,然后还要向老师电话汇报研究成果,这是今天的三个任务。在编程语言中,实现某一个任务的一般单元就是“函数”。

    2、顺序执行

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

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

          并发和并行都是完成多任务更加有效率的方式,但还是有一些区别的,并发(concurrency),并行(parallellism),可见他们的确是有区别的。下面通过一些具体的例子进行说明。

          例子一:

              假设一个有三个学生需要辅导作业,帮每个学生辅导完作业是一个任务
                顺序执行:老师甲先帮学生A辅导,辅导完之后再取给B辅导,最后再去给C辅导,效率低下 ,很久才完成三个任务
                并发:老师甲先给学生A去讲思路,A听懂了自己书写过程并且检查,而甲老师在这期间直接去给B讲思路,讲完思路再去给C讲思路,让B自己整理步骤。这样老师就没有空                         着,一直在做事情,很快就完成了三个任务。与顺序执行不同的是,顺序执行,老师讲完思路之后学生在写步骤,这在这期间,老师是完全空着的,没做事的,所以效率低下。
                并行:直接让三个老师甲、乙、丙三个老师“同时”给三个学生辅导作业,也完成的很快。

          例子二:

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

    理解:

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

    普通解释:
    并发:交替做不同事情的能力
    并行:同时做不同事情的能力
    专业术语:
    并发:不同的代码块交替执行
    并行:不同的代码块同时执行

    并发和并行的意义:

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

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


    ---------------------
    作者:LoveMIss-Y
    来源:CSDN
    原文:https://blog.csdn.net/qq_27825451/article/details/78850336
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    SPL
    RPC
    file_get_content和curl的区别
    怎么在header前输出数据
    修改elinput的placehoder文字颜色
    vue清空对象中的属性值
    vue axios
    vue点击更改背景颜色
    终端的各种错误
    各种布局
  • 原文地址:https://www.cnblogs.com/490144243msq/p/11134775.html
Copyright © 2020-2023  润新知