signal(信号)——进程间通信的一种方式,也可以作为软件中断的一种方式。一个进程一旦接收到一个信号,就会中断原来的程序执行,根据这个信号进行处理。为了简化术语,信号是中断正在运行的函数执行的事件。信号总是在Python主线程中执行。对于信号,这里不做详细介绍。Python封装了操作系统信号函数的库signal。signal库允许我们在python程序中实现信号机制。Python中的信号处理#首先,你需要了解为什么Python提供信号库。信号库使我们能够在收到信号时使用信号处理程序来执行自定义任务。任务:当接收到信号时,可以使用signal.singal()函数实现信号处理方法。Python处理信号#通常,Python信号处理程序总是在主Python主解析器的主线程中执行,即使信号是在另一个线程中接收到的。这意味着信号不能用作线程间通信的手段。您可以改用线程模块中的同步原语。Python信号处理流程需要对信号处理程序(signalhandling)进行简要说明。信号处理是一项任务或程序。当检测到特定信号时,处理函数需要两个参数,信号id信号号(Linux中为1-64),栈帧frame。通过相应的信号启动相应的信号处理,signal.signal()会为该信号分配一个处理函数。比如:在运行一个脚本的时候,取消,这时候,捕获到一个信号,通过捕获这个信号,程序可以异步优雅的处理。通过在应用程序中注册一个信号处理程序:importsignalimporttimedefhandler(a,b):#定义一个信号处理程序handler)#为相应的信号分配句柄whileTrue:print("Pressctrl+c")time.sleep(10)如果相应的信号没有被捕获和处理,python会抛出异常。root@Seal:/mnt/d/pywork/signal#pythonsignal.py^CTraceback(mostrecentcalllast):File"signal.py",line3,in
