进程(Process)是计算机的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.是对于运行的程序的抽象,从实际角度看,是一种数据结构,目的在于清晰的刻画动态系统的内在规律,有效的管理和调度进入系统主存储器运行的程序.
注意: 同一个程序执行两次,就会在操作系统中出现两个进程,所以我们可以同时运行一个软件,分别做不同的事也不会混乱.
进程调度:
1.先来先服务调度算法
2.短作业优先调度算法
3.时间片轮转法
4.多级反馈队列
进程的三大状态分别是:就绪状态(除CPU以外所有的资源都分配到),运行状态(正在运行),阻塞状态(放弃CPU执行,将进程放入内存中)
进程的创建于结束:
1.系统初始化
2.一个进程正在运行过程中开启了子进程
3.用户的交互请求,而创建一个新进程
4.一个处理作业的初始化
1.正常退出
2.出错退出
3.严重出错
4.被其他进程杀死
创建子进程就需要介绍multiproces模块,借助此模块可以完成进程的创建
注意:
1.需要使用关键字的方式来指定参数
2.args指定的为传给target函数的位置参数,是一种元组形式,必须有逗号
3.target表示调用对象,即子进程要执行的任务
4.args表示调用对象的位置参数元组,args = (1,2,"egon")
5.kwargs表示调用对象字典,kwargs = {"name":"egon","age":18}
6.name是子进程的名字
import time from multiprocessing import Process def f(name): print('hello', name) print('我是子进程') if __name__ == '__main__': p = Process(target=f, args=('bob',)) p.start() time.sleep(1) print('执行主进程的内容了')
import time from multiprocessing import Process def f(name): print('hello', name) time.sleep(1) print('我是子进程') if __name__ == '__main__': p = Process(target=f, args=('bob',)) p.start() #p.join() print('我是父进程')
import os from multiprocessing import Process def f(x): print('子进程id :',os.getpid(),'父进程id :',os.getppid()) return x*x if __name__ == '__main__': print('主进程id :', os.getpid()) p_lst = [] for i in range(5): p = Process(target=f, args=(i,)) p.start()
进程中的方法:
p.start()开始创建一个进程
p.join()让父进程在子进程执行完后再继续执行(同步)
p.is_alive()判断进程是否还在
p.terminate()杀死一个进程
os.getpid()获取当前进程的pid
os.getppid()获取父进程的pid
p.daemon = True,将p设为守护进程
守护进程:
1.守护进程会在主程序代码执行结束后就终止
2.守护进程内无法在开启子进程,否则抛出异常
注意:进程之间是独立的,主进程代码运行结束,守护进程随即终止