python 优先级和常用命令

进程的优先级决定了执行权限和占有系统资源的优先程度

优先级越高,需要的权限越高,同时占有的系统资源就越高;

查看优先级的命令:

top #在终端输入命令,该命令是动态监测系统优先级,按q退出,<> 进行翻页查找

这里写图片描述

linux系统中优先级范围:-20~19;
其中-20优先级最高。
用户创建进程默认的优先级为0

nice #以指定的优先级运行某个进程
renice n  PID 修改一个正在运行的进程的优先级

问题:
1. 什么是进程
2. 继承和程序的区别
3. 进程的集中状态及相互间的转换
4. 什么事PCB,PID,CPU时间片


写一个程序,在程序中指定位置调用接口来创建新的进程:
用os.fork函数实现
fork() 功能: 创建一个新的进程
参数:无
返回值:
<0时表示进程创建失败
==0在子进程中fork的返回值为0

0在父进程中fork的返回值大于0

os模块提供大量和系统相关的功能函数接口
os模块的使用是系统相关的,在不同的系统中可能使用方法不同。

fork是os模块函数,只能在linux和unix下使用


例子:

import os


#创建新的进程
pid=os.fork()

if pid<0:
    print("create process failed")
elif pid==0:
    print("This is the new process")
else:
    print("This is the parent process")

print("The process end")

打印结果:

This is the parent process
The process end
This is the new process
The process end

以上程序执行了两次,如果pid<0这种情况发生则会创建一个新的进程,这个新的进程会在内存开辟出一个新空间,新的进程也会执行。在终端上,父进程和子进程都会在屏幕展示出来。
子进程是从父进程的下一句开始fork,执行后父子进程在各自执行互不干扰。
fork创建的新进程被称为子进程(child process)。fork函数被调用一次但返回两次。两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。

测试1:父进程中fork之前的内容,自己成同样会复制但是父进程空间内容的修改不会相互影响

测试2:父子进程在执行上互不影响,理论上不一定谁先执行。

测试3:子进程虽然复制父进程的空间,但是也有自己的特性,比如自己的PID,进程控制块,进程栈。父进程中的fork返回值即为创建的子进程的PID号


相关进程的函数 :

os.getpid() #获取当前进程的PID号
os.getppid()#获取当前进程的父进程的PID号
os._exit()  #用来结束进程
sys.exit()  #用来结束进程

僵尸进程:子进程先于父进程退出之后,父进程没有对子进程进行相应的处理。
僵尸进程影响:进程退出后,仍有部分信息残留在内存空间中,大量的僵尸进程会影响系统运行。所以应该尽量避免僵尸进程的产生。
处理僵尸进程的方法:让父进程先退出(不好控制),父进程处理子进程的退出
linux终端命令行执行:

ps #查看僵尸进程

这里写图片描述

  1. 让父进程先退出;
  2. 创建二级子进程处理;
  3. 使用IPD杀死僵尸进程:
kill -HUP PID号码  #杀死僵尸进程片

4.在父进程进行信号处理的方法忽略子进程发来的信号:

signal(SIGCHILD,SIG_IGN)
os.wait()#等待子进程退出进行处理,返回值包含两个元素的元组,第一个是退出的进程的PID号,第二个是子进程的退出状态

孤儿进程:父进程先于子进程退出,此时子进程就会变成孤儿进程。
影响:当一个进程变为孤儿进程,系统会自动的使用一个其他进程,成为孤儿进程的父进程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值