For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
信号(signal)-- 进程间通讯的一种方式,也可作为一种软件中断的方法。一个进程一旦接收到信号就会打断原来的程序执行来按照信号进行处理。
简化术语,信号是一个事件,用于中断运行功能的执行。信号始终在主Python线程中执行。对于信号,这里不做详细介绍。
Python封装了操作系统的信号功能的库 singal 的库。 singal 库可以使我们在python程序中中实现信号机制。
Python的信号处理
首先需要了解Python为什么要提供 signal Library 。信号库使我们能够使用信号处理程序,以便当接收信号时都可以执行自定义任务。
Mission:当接收到信号时执行信号处理方法
可以通过使用 signal.singal() 函数来实现此功能
Python对信号的处理
通常情况下Python 信号处理程序总是会在主 Python 主解析器的主线程中执行,即使信号是在另一个线程中接收的。 这意味着信号不能被用作线程间通信的手段。 你可以改用 threading 模块中的同步原语。
Python信号处理流程,需要对信号处理程序(signal handling )简要说明。 signal handling 是一个任务或程序,当检测到特定信号时,处理函数需要两个参数,即信号id signal number (Linux 中 1-64),与堆栈帧 frame 。通过相应信号启动对应 signal handling , signal.signal() 将为信号分配 处理函数。
如:当运行一个脚本时,取消,此时是捕获到一个信号,可以通过捕获信号方式对程序进行异步的优雅处理。通过将信号处理程序注册到应用程序中:
import signal
import time
def handler(a, b): # 定义一个signal handling
print("Signal Number:", a, " Frame: ", b)
signal.signal(signal.SIGINT, handler) # 将handle分配给对应信号
while True:
print("Press ctrl + c")
time.sleep(10)
如果不对对应信号进行捕获处理时,python将会抛出异常。
root@Seal:/mnt/d/pywork/signal# python signal.py
^CTraceback (most recent call last):
File "signal.py", line 3, in
while True:
KeyboardInterrupt
信号枚举
信号的表现为一个int,Python的信号库有对应的信号枚举成员
其中常用的一般有,
SIGINT control+c
SIGTERM 终止进程 软件终止信号
SIGKILL 终止进程 杀死进程
SIGALRM 超时
东莞达内IT培训免费试听课程火热报名中,带你轻松入行,26大课程全国45个城市,129家中心均可就近学习,学完后,达内老师会帮助进行面试辅导,在面试前,就带你跨过可能存在的坑,让你入职更加顺利
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请添加3216764521学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。