进程理论--同步异步 / 阻塞非阻塞/ 并发与并行 /
1.什么是进程
进程:正在进行的一个过程或者说一个任务。而负责执行任务则是cpu。
进程与程序的区别:程序仅仅只是一堆代码而已,而进程指的是程序的运行过程
2.多道技术(基于单核背景下产生的)
单道: 一条道走到黑 ----> 串行 - 比如: a,b需要使用cpu,a先使用,b等待a使用完毕后,b才能使用cpu。 - 多道: (*******) - 比如: a,b需要使用cpu,a先使用,b等待a,直到a进入“IO或执行时间过长” a会(切换 + 保存状态),然后b可以使用cpu,待b执行遇到 “IO或执行时间过长” 再将cpu执行权限交给a,直到两个程序结束。 - 空间上的复用(*******): 多个程序使用一个CPU。 - 时间上的复用(*******): 切换 + 保存状态 1) 当执行程序遇到IO时,操作系统会将CPU的执行权限剥夺。 优点: - CPU的执行效率提高 2) 当执行程序执行时间过长时,操作系统会将CPU的执行权限剥夺。 缺点: - 程序的执行效率低
3.并发与并行
- 并发与并行:(*******) - 并发: 在单核(一个cpu)情况下,当执行两个a,b程序时,a先执行,当a遇到IO时,b开始争抢cpu的执行权限,再让b执行,他们看起像同时运行。 - 并行: 在多核(多个cpu)的情况下,当执行两个a,b程序时,a与b同时执行。他们是真正意义上的同时运行。
面试题: 在单核情况下能否实现并行? 不行
4.同步异步
同步与异步(*******):
同步与异步 指的是 “提交任务的方式”。
同步(串行):
两个a,b程序都要提交并执行,假如a先提交执行,b必须等a执行完毕后,才能提交任务。
异步(并发):
两个a,b程序都要提交并执行,假如a先提交并执行,b无需等a执行完毕,就可以直接提交任务。
5.阻塞与非阻塞
阻塞与非阻塞(*******): - 阻塞(等待): - 凡是遇到IO都会阻塞。 - IO: input() output() time.sleep(3) 文件的读写 数据的传输 - 非阻塞 (不等待) : - 除了IO都是非阻塞 (比如: 从1+1开始计算到100万)
6.进程的三种状态
5) 进程的三种状态(*******): - 就绪态: - 同步与异步 - 运行态: 程序的执行时间过长 ----> 将程序返回给就绪态。 - 非阻塞 - 阻塞态: - 遇到IO 面试题: 阻塞与同步是一样的吗?非阻塞与异步是一样的吗? - 同步与异步: 提交任务的方式 - 阻塞与非阻塞: 进程的状态。 - 异步非阻塞: ----> cpu的利用率最大化!
也可以通过"子进程.join()"的方式来阻塞主进程
进程阻塞的条件:即进程出现I/0操作时会阻塞 常见的IO操作:input() output() time.selep(10) 文件读写 数据传输 ‘子进程.join()’