昨日课程回顾:算法
编程语言的发展:编程
机器语言: 二进制windows
汇编语言: 指令服务器
高级语言: 面向过程(C) 面向对象(Python)session
操做系统的目标:并发
为用户更方便的使用异步
并行:指两件或多间事情,在同一时间点同时执行编程语言
并发:指两件或多见事情,在同一时间间隔内同时执行操作系统
计算机组成:线程
CPU,主板,储存,输入,输出
进程由三部分组成:
代码段,数据段,PCB(进程控制块)
进程的特征:
动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
并发性:任何进程均可以同其余进程一块儿并发执行
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
异步性:因为进程间的相互制约,使进程具备执行的间断性,即进程按各自独立的、不可预知的速度向前推动
多个不一样的进程能够包含相同的程序:一个程序在不一样的数据集里就构成不一样的进程,能获得不一样的结 果;可是执行过程当中,程序不能发生改变。
进程的三个基本状态:
就绪状态:得到了除CPU以外运行的全部资源
执行状态:得到了全部资源,处于正在执行的状态
阻塞状态:由于各类缘由,致使进程放弃了CPU,致使进程没法继续执行,此时进程处于内存中
dos系统: 单用户单任务
windows系统: 单用户多任务(早期的windows)
unix系统: 多用户多任务
为何要有操做系统?
1 封装了全部硬件的接口,是用户更方便的使用
2 对于计算机内全部资源,进行一个合理的调度和分配
多进程的模块:
multiprocessing
process
并行 : 并行是指二者同时执行,好比有两条车道,在某一个时间点,两条车道上都有车在跑;(资源够用,好比三个线程,四核的CPU )
并发 : 并发是指资源有限的状况下,二者交替轮流使用资源,好比只有一条车道(单核CPU资源),那么就是A车先走,在某个时刻A车退出把道路让给B走,B走完继续给A ,交替使用,目的是提升效率。
并行是从微观上,也就是在一个精确的时间片刻,有不一样的程序在执行,这就要求必须有多个处理器。
并发是从宏观上,在一个时间段上能够看出是同时执行的,好比一个服务器同时处理多个session。
早期单核CPU时候,没有并行的概念,只有并发(微观上串行,宏观上并行)
站在CPU角度看 站在人的角度看就是同时有不少任务同时执行
在了解其余概念以前,咱们首先要了解进程的几个状态。在程序运行的过程当中,因为被操做系统的调度算法控制,程序会进入几个状态:就绪,运行和阻塞。
(1)就绪(Ready)状态
当进程已分配到除CPU之外的全部必要的资源,只要得到处理机即可当即执行,这时的进程状态称为就绪状态。
(2)执行/运行(Running)状态当进程已得到处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。
(3)阻塞(Blocked)状态正在执行的进程,因为等待某个事件发生而没法执行时,便放弃处理机而处于阻塞状态。引发进程阻塞的事件可有多种,例如,等待I/O完成(input)、申请缓冲区不能知足、等待信件(信号)等。
同步:
所谓同步就是一个任务的完成须要依赖另一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列
。要么成功都成功,失败都失败,两个任务的状态能够保持一致。
异步:
所谓异步是不须要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工做,依赖的任务也当即执行,只要本身完成了整个任务就算完成了
。至于被依赖的任务最终是否真正完成,依赖它的任务没法肯定,因此它是不可靠的任务序列
。
from multiprocessing import Process
获取当前进程的pid号, os.getpid()
获取当前进程的父进程的pid号, os.getppid()
开启子进程的方式:
1 p = Process (target = func,args=(,))
target : 是子进程要执行的任务
arges:是父进程给子进程传递的参数(必须是元组的形式)
2 自定义类,去继承Process
进程的经常使用方法:
(1) start() 开启一个子进程
(2) join() 异步变同步(就是让父进程停留在join这句话,等待子进程执行结束,父进程在继续执行)
(3) is_alive() 判断进程是否还活着
(4) terminate() 杀死进程
进程的经常使用属性:
(1) p.name = 给p进程一个名字
(2) p.pip 返回p进程的pid
(3) p.daemon=True 及那个p进程设置位守护进程.(True为守护进程,Flase为普通进程)
守护进程的两个特色:
守护进程会随着父进程的结束而结束
守护进程不能再建立子进程(不能要孩子)