python学习笔记——信号模块signal,,基于python学习
python学习笔记——信号模块signal,,基于python学习
基于python学习笔记——多进程间通信——Linux信号基础的学习基础,进一步学习Python标准库中的signal模块。
尽管signal是python中的模块,但是主要针对UNIX平台(比如Linux,MAC OS),而Windows内核中由于对信号机制的支持不充分,所以在Windows上的Python不能发挥信号系统的功能。
signal模块负责python程序内部的信号处理;典型的操作包括信号处理函数、暂停并等待信号,以及定时发出SIGALRM等;
1 signal基本信号名
引入模块:import signal
signal.SIGHUP # 连接挂断;signal.SIGILL # 非法指令;signal.SIGINT # 终止进程(ctrl+c);signal.SIGTSTP # 暂停进程(ctrl+z);signal.SIGKILL # 杀死进程(此信号不能被捕获或忽略);signal.SIGQUIT # 终端退出;signal.SIGTERM # 终止信号,软件终止信号;signal.SIGALRM # 闹钟信号,由signal.alarm()发起;signal.SIGCONT # 继续执行暂停进程;
2 常用信号处理函数
2.1设置发送SIGALRM信号的定时器
signal.alarm(time)
参数:time为时间参数
功能:在time时间后,向进程自身发送SIGALRM信号
import signalimport timesignal.alarm(4)#4s后终止程序while True: time.sleep(1) print("学习python中...")
运行
学习python中...学习python中...学习python中...闹钟
当在一个程序中出现两个signal.alarm()函数时
import signalimport timeprint(signal.alarm(3)) # 0time.sleep(1)print(signal.alarm(4)) # 2while True: time.sleep(1) print("学习python中...")
运行
02学习python中...学习python中...学习python中...闹钟
注意:在一个进程中,只能设置一个时钟,如果设置第二个则会覆盖第一个的时间,返回地一个的剩余时间,第一个闹钟返回0。
2.1 设置信号处理函数
signal.signal(sig, handler)
功能:按照handler制定的信号处理方案处理函数
参数:
sig:拟需处理的信号,处理信号只针对这一种信号起作用sig
hander:信号处理方案
在信号基础里提到,进程可以无视信号、可采取默认操作、还可自定义操作;当handler为下列函数时,将有如下操作:
SIG_IGN:信号被无视(ignore)或忽略
SIG_DFL:进程采用默认(default)行为处理
function:handler为一个函数名时,进程采用自定义函数处理
*SIGSTOP SIGKILL不能处理,只能采用
python学习笔记——信号模块signal
评论关闭