1,什么是进程
- 进程是系统资源分配的基本单位,每启动一个进程操作系统都需要为其分配运行资源
- 通俗的来说,就是一个运行的程序或者软件
- 一个进程至少有一个进程,一个进程至少有一个线程,多进程可以完成多任务
2,进程的状态
- 工作中,任务数往往大于cpu的核数,即一定有一些任务正在执行,而另外一些任务在等待cpu进行执行,因此导致了有了不同的状态
- 就绪态:运行的条件都已近满足,正在等cpu执行
- 执行态:cpu正在执行其功能
- 等待态:等待某些条件满足,例如一个程序sleep了,此时就处于等待状态了
3,进程的优缺点
4,python怎么使用多进程
#导入线程模块
import multiprocessing
过程([group [,target [,name [,args [,kwargs]]]]])
组:指定进程组,目前只能使用无
目标:执行的目标任务名
名称:进程名字
ARGS:以元组方式给执行任务传参
kwargs:以字典方式给执行任务传参
过程创建的实例对象的常用方法:
启动():启动子进程实例(创建子进程)
加入([超时):是否等待子进程执行结束,或等待多少秒
终止():不管任务是否完成,立即终止子进程
过程创建的实例对象的常用属性:
名:当前进程的别名,默认为过程-N,N为从1开始递增的整数
PID:当前进程的PID(进程号)
import multiprocessing
import time
import os
def work():
# 查看当前进程
current_process = multiprocessing.current_process()
print("work:", current_process)
# 获取当前进程的编号
print("work进程编号:", current_process.pid, os.getpid())
# 获取父进程的编号
print("work父进程的编号:", os.getppid())
for i in range(10):
print("工作中....")
time.sleep(0.2)
# 扩展: 根据进程编号杀死对应的进程
os.kill(os.getpid(), 9)
if __name__ == '__main__':
# 查看当前进程
current_process = multiprocessing.current_process()
print("main:", current_process)
# 获取当前进程的编号
print("main进程的编号:", current_process.pid)
# 创建子进程
sub_process = multiprocessing.Process(target=work)
# 启动进程
sub_process.start()
# 主进程执行打印信息操作
for i in range(20):
print("我在主进程中执行...")
time.sleep(0.2)
小结
# 查看当前进程
current_process = multiprocessing.current_process()
print("main:", current_process)
# 获取当前进程的编号
print("main进程的编号:", current_process.pid)
# 获取父进程的编号
print("work父进程的编号:", os.getppid())
根据进程编号杀死对应的进程
os.kill(os.getpid(), 9)