并发,并行,阻塞,非阻塞,同异步阻塞非阻塞概念
-
进程:进行中的程序就是一个进程(任务管理器中的所有程序都是进程)
- 进程占用资源,需要操作系统调度
- PID:能够唯一标识一个进程,关闭进程则消失,下一次启动进程又会得到一个新的PID
- 进程是计算机当中最小的资源分配单位
-
并发:多个程序同时执行本质上还是串行只是交替执行快而已(轮流执行)
- 多个程序轮流在一个CPU上执行
- 宏观上:多个程序同时执行
- 微观上:多个程序轮流在一个CPU上执行,本质上还是串行只是交替执行快而已
-
并行:多个程序同时执行,并且同时在多个CPU上执行 (同时执行)
-
同步:在做A事件的时候,发起B事件,必须A事件结束完之后,才继续执行B事件
-
异步:在做A事件的时候,发起B事件,不需要等待A事件结束,就可以执行B事件
-
阻塞:在程序运行中CPU不工作就是阻塞input,accept,recv,recvfrom,sleep,connect
-
非阻塞:在程序运行中CPU工作就是非阻塞
-
同步阻塞 : 调用一个函数需要等待这个函数的执行结果,并且在执行这个函数的过程中CPU不工作
inp = input('>>>')
-
同步非阻塞 :调用一个函数需要等待这个函数的执行结果,在执行这个函数的过程中CPU工作ret = eval('1+2+3-4')
-
异步非阻塞 :调用一个函数不需要等待这个函数的执行结果,并且在执行这个函数的过程中CPU工作start()
-
异步阻塞 : 调用一个函数不需要等待这个函数的执行结果,并且在执行这个函数的过程中CPU不工作,开启10个进程异步的,获取这个进程的返回值,并且能做到哪一个进程先结束,就先获取谁的返回值
-
线程:
- 线程是进程中的一个单位,不能脱离进程存在
- 线程是计算机中能够被CPU调度的最小单位
-
分布式:应用于比较复杂的任务时,把任务分解成多个小块,分散给多个CPU去做
-
实现分布式的方式:
- 操作系统
- 程序、插件软件
- celery分布式框架