目录
并发编程
1. 并发编程
2. 如何实现并发:
3. 进程是什么
4. 多道技术
5. 并发重要概念
6. 进程的三种状态
7. 进程的创建和销毁
8. 进程和程序的区别
9. 进程的层次结构
10.PID 和 PPID
11.python 如何使用多进程
12.join 函数
13. 进程对象的常用属性
14. 僵尸进程与孤儿进程
并发编程
1. 并发编程
为什么要并发?
程序默认执行方式就是串行, 即程序自上而下, 一行一行顺序执行, 必须把当前任务执行完才能执行下一个, 这样造成效率低
并发可以同时执行多个任务 来提高程序的效率
2. 如何实现并发:
? 1. 多进程 核心原理是多道技术
? 2. 多线程
? 3. 协程
3. 进程是什么
进程指得是正在运行的程序, 是操作系统调度以及进行资源分配的基本单位 .
多进程指的是同一时间有多个程序被装入内存并执行
4. 多道技术
多进程的核心原理是多道技术
1. 空间复用
? 统一时间, 加载多个任务到内存中, 多个进程之间内存区域需要相互隔离, 这种隔离是物理层面的隔离, 其目的是为了保证数安全
2. 时间复用
? 指的是, 操作系统会在多个进程之间做切换执行
? 切换任务的两种情况
? 1. 当一个进程遇到了 IO 操作 时会自动切换
? 2. 当一个任务执行时间超过阈值会强制切换
? 注意: 在切换前必须保存状态, 以便后续恢复执行
简单的总结就是切换加保存
有了多道技术, 计算机就可以同时并发的处理多个任务
5. 并发重要概念
? 串行 程序自上而下顺序执行
? 并发 在不同任务之间快速切换
? 并行 真正的同时执行 必须具备多核 CPU
以上三个概念都是用于描述处理任务的方式
? 阻塞 指的是程序遇到了 IO 操作, 无法继续执行代码时的一种状态
? 非阻塞 指的是程序没有遇到 IO 操作的一中状态
? 是程序的状态
6. 进程的三种状态
? 阻塞 运行 就绪
其中运行和就绪是非阻塞状态
7. 进程的创建和销毁
对于通用计算机而言. 必须具备创建和销毁进程的能力
创建
1. 用户的交互式请求 , 鼠标双击
2. 由一个正在运行的程序 调用了开启进程的接口 . 例如 subprocess
3. 一个批处理作业开始
4. 系统初始化
销毁:
1. 任务完成 自愿退出
2. 强制结束 taskkill kill 非自愿
3. 程序遇到了异常
4. 严重错误 比如访问了不该访问的内存
8. 进程和程序的区别
程序是 一堆代码放在一个文件中
进程是将代码从硬盘读取到内存然后执行产生的
进程是由程序产生的 , 一个程序可以产生多个进程
9. 进程的层次结构
在 Linux 中 进程具备父子关系, 是一个树状结构 , 可以互相查找到对方
在 Windows 没有层级关系 , 父进程可以将子进程的句柄转让
10.PID 和 PPID
PID 是当前进程的编号, PPID 是父进程的编号
访问 PID 与 PPID :
- import os
- os.getpid()
- os.getppid()
11.python 如何使用多进程
创建子进程的方式
1. 导入 multiprocessing 中的 Process 类, 实例化这个类指定要执行的任务 target
2. 导入 multiprocessing 中的 Process 类 继承这个类 覆盖 run 方法 将要执行的任务放入 run 中开启进程时会自动执行该函数
12.join 函数
实例化子进程使用 join 函数会让主进程等待子进程执行完毕再继续执行
13. 进程对象的常用属性
- if __name__ == '__main__':
- p = Process(target=task,name="老司机进程")
- p.start()
- p.join()
- # print(p.name) #进程名
- # p.daemon #守护进程
- # p.join()
- # print(p.exitcode) # 获取进程的退出码 就是 exit() 函数中传入的值
- # print(p.is_alive()) # 查看进程是否存活
- # print("zi",p.pid) # 获取进程 id
- # print(os.getpid())
- # p.terminate() #终止进程 与 strat 相同的是 不会立即终止, 因为操作系统有很多事情要做
- # print(p.is_alive())
14. 僵尸进程与孤儿进程
孤儿进程 : 当父进程已经结束 而子进程还在运行子进程就称为孤儿进程 , 有其存在的必要性, 没有不良影响 .
僵尸进程 : 当一个进程已经结束了但是, 它仍然还有一些数据存在 , 此时称之为僵尸进程 .
来源: http://www.bubuko.com/infodetail-3111366.html