进程part1
很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771
一、进程介绍
进程就是正在运行的程序,它是操作系统中,资源分配的最小单位
资源分配:分配的是cpu和内存等物理资源,进程号是进程的唯一标识
获取当前进程–子进程
异步和同步:
1、获取子父进程
获取当前进程的父进程
为解决Windows系统和Linux系统的兼容问题,下面这句话必须加上:
__name__ == “__main__”
运行结果:
2、进程的基本使用
引用multiprocessing模块来创建以一个进程:
运行结果:
2、创建带有参数的进程
在进程对象的创建处使用args进行传参
运行结果:
3、进程之间的数据彼此隔离
运行结果:
如图,子进程对count的操作没有影响到主进程
4、多个进程之间的异步并发
多个进程之间是异步并发的程序,因为cpu的调度策略问题,不一定哪个程序先执行,哪个程序后执行
整体而言,主进程比子进程创建的速度要快,cpu遇到阻塞会立即切换任务,等到阻塞态的任务变成了就绪态,cpu再回来执行
主程序会默认等到所有子程序执行结束之后,再统一关闭程序,释放资源
若不等待,有可能在后台存有多个未执行结束的子进程,会变成僵尸进程,不停的占用cpu和内存。
运行结果:
如图,因为多个进程之间是异步并发的,所以会产生以上结果
二、join
等待当前子进程全部执行完毕后,主进程再进行执行
1、基本语法
运行结果:
2、使用自定义类的方法创建进程
自定义进程类的要求:
- 必须继承Process这个父类
- 所有进程执行任务的逻辑必须写在run方法里面
基本写法:
带有参数自定义类的方法:
运行结果:
三、守护进程
守护进程守护的是主进程,如果主进程中的所有代码执行完毕了,当前这个守护进程会被立刻杀死,立即终止。
语法:
进程.daemon = True 设置当前这个进程为守护进程
必须在start()调用进程之前进行设置
默认:主进程会等待所有子进程执行结束后,再关闭程序,释放资源
运行结果:
案例:
监控报活: 利用守护进程特性,监控日志分析服务器是否存活
运行结果: