python-同步和异步、阻塞和非阻塞、串行和并行、并行和并发、密集型、线程和进程的相关概念

地址:https://mp.csdn.net/postedit/83050300

1. 同步和异步

  关注的是消息的通信机制,描述的是一种行为方式,是多个任务之间的关系。

① 同步: 调用者主动等待被调用方返回结果,在没有返回结果之前,就一直专职等待。

千万不要把计算机中“同步”理解成“同时执行”。

② 异步:调用者发送请求请求,不会专职等待被调用方返回结果,当被调用方有结果之后,再通知调用者,再继续执行刚才的任务。

2. 阻塞和非阻塞

  描述的是一个任务的某一种状态。

① 阻塞:调用者当调用了被调用者时,被调用者没有返回结果之前,调用者就一直等待,描述等待的这个状态,为阻塞状态。

② 非阻塞:调用者再没有得到被调用者返回结果之前,会去执行其他的任务,描述不会等待这个状态,为非阻塞。

概念的区分

扫描二维码关注公众号,回复: 11456676 查看本文章

同步异步和阻塞与非阻塞

  阻塞与非阻塞和同步与异步之间没有必然的联系,是两个概念 ,两个角度
  阻塞是使用了同步机制的结果
  非阻塞是使用了异步机制的结果。

① 非阻塞是不是一定就意味着异步?
不是,非阻塞只能决定当前任务的状态(可以不等着),是不是要去做其他的任务,不是由非阻塞决定的,是由异步决定的。

② 阻塞是不是一定意味着任务之间一定不是异步关系? 是

③ 异步是不是意味着当前的任务处于非阻塞状态? 是

④ 同步一定也意味着某一个时刻,某一个任务处于阻塞状态? 是

3. 串行和并行

  是任务的执行方式

① 串行:多个任务时,各个任务按照顺序执行,执行完一个任务之后,才能执行下一个任务。可以理解成同步的概念,两个任务是串行执行的===两个任务之间的关系是同步机制

② 并行:多个任务同时执行,意味着多个任务之间是异步机制。

4. 并行和并发

  同时处理的含义,只有【并行】是真正意义上同时处理。

① 时间上:
    并行指的是多个时间同一个时刻发生。
    并发是多个事件在同一个时间间隔执行。其实是切换时间片轮流执行。微观的角度(串行)

② 作用点上:
    并行作用在多个实体上多个事件
    并发作用在一个实体上的多个事件

③ 处理个数:
     并行,多个处理器处理多个任务
     并发,一个处理器处理多个任务

5. IO密集型和计算密集型

  程序(任务)的类型
  IO密集型:cpu占用率比较低,IO占用率比较高。
  Cpu密集型:cpu占用率高,IO占用率低。

  IO密集型更适合做并发处理。IO执行速度慢

6. 并发的三个层次

  低阶:操作系统层面实现并发,一般是针对于一门语言的库编写,不是给程序员用,python不支持
  中阶:几乎所有语言都支持中阶并发。
  高阶:第三方模块执行并发操作。

7. 线程和进程

  程序:程序可以看成一些列的指令集。静态的。
  进程:当程序运行起来之后,创建一个(也可以是多个)进程。
  线程:进程的基本执行单元,一个进程至少要一个线程。
  进程可以看成是任务,比如洒水,扫地
  线程就是基本的执行单元,执行任务的人。

  一个线程只能属于一个进程

关于进程独立,线程共享的问题(重要):
进程具有独立的空间和系统资源,线程没有独立的系统资源,处于同一个进程下的线程共享该进程下的资源。
一定要避免多线程(同一个进程下)资源出现的并发修改问题————————线程不安全。

8. 多线程

  【同时】:并发

  多进程:多个任务同时执行
  多线程:在同一个任务中,多个线程同时执行
   处理:单核cpu处理IO密集型才有效果

多线程的缺点:
  (1)线程也是程序,也需要占用内存,设置的线程越多,占用内存就越多。
  (2)多线程需要协调管理,需要cpu时间跟踪,cpu也会被占用一部分。
  (3)最重要:多线程的共享资源不安全。导致数据不一致。

date: 2018-10-14

author: cymx66688

猜你喜欢

转载自blog.csdn.net/cymx66688/article/details/83050300