进程
进程是操作系统分配资源的基本单元,是程序隔离的边界。
进程和程序
程序只是一组指令的集合,它本身没有任何运行的含义,它是静态的。
进程程序的执行实例,是动态的,有自己的生命周期,有创建有撤销,存在是暂时的。
进程和程序不是一一对应的,一个程序可以对应多个进程,一个进程也可以执行一个或者多个程序。
我们可以这样理解:编写完的代码,没有运行时称为程序,正在运行的代码,会启动一个(或多个)进程。
进程的状态
在我们的操作系统⼯作时,任务数往往⼤于cpu核心数,即⼀定有⼀些任务正在执⾏,⽽另外⼀些任务在等待cpu,因此导致了进程有不同的状态。
- 就绪状态:已满⾜运⾏条件,等待cpu执⾏
- 执⾏状态:cpu正在执⾏
- 等待状态:等待某些条件满⾜,比如⼀个程序sleep了,此时就处于等待状态
Python中的进程
在Python中,进程是通过multiprocessing
多进程模块来创建的,multiprocessing模块提供了⼀个Process
类来创建进程对象。
创建⼦进程
Process语法结构:
Process(group, target, name, args, kwargs)
- group:指定进程组,⼤多数情况下⽤不到
- target:表示调用对象,即子进程要执行的任务
- name:子进程的名称,可以不设定
- args:给target指定的函数传递的参数,以元组的⽅式传递
- kwargs:给target指定的函数传递命名参数
Process常用方法
- p.start() 启动进程,并调用该子进程中的p.run()方法
- p.join(timeout):主进程等待⼦进程执⾏结束再结束,timeout是可选的超时时间
- is_alive():判断进程⼦进程是否还存活
- p.run() 进程启动时运