对Python信号处理模块signal详解
作者:kongxx 发布时间:2021-08-20 04:06:11
标签:Python,信号,signal
Python中对信号处理的模块主要是使用signal模块,但signal主要是针对Unix系统,所以在Windows平台上Python不能很好的发挥信号处理的功能。
要查看Python中的信号量,可以使用dir(signal)来查看。
signal.signal()
在signal模块中,主要是使用signal.signal()函数来预设信号处理函数
singnal.signal(signalnum, handler)
其中第一个参数是信号量,第二个参数信号处理函数。
下面看个简单的例子,其中
定义了一个信号处理函数signal_handler(),用来处理程序接收到信号时执行的操作
一段循环等待发送信号
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import signal
import time
def signal_handler(signum, frame):
print('Received signal: ', signum)
while True:
signal.signal(signal.SIGHUP, signal_handler) # 1
signal.signal(signal.SIGINT, signal_handler) # 2
signal.signal(signal.SIGQUIT, signal_handler) # 3
signal.signal(signal.SIGALRM, signal_handler) # 14
signal.signal(signal.SIGTERM, signal_handler) # 15
signal.signal(signal.SIGCONT, signal_handler) # 18
while True:
print('waiting')
time.sleep(1)
运行上面的程序
python test.py
然后另外开一个终端,找到对应的进程,并执行下面的kill操作
kill -1 <pid>
kill -2 <pid>
kill -3 <pid>
kill -14 <pid>
kill -15 <pid>
kill -18 <pid>
kill -9 <pid> # 最后杀死进程
此时可以看到test.py的输出,打印的就是具体接收到的信号。
这里注意一点就是程序中注册了SIGINT信号,所以在运行程序后使用CTRL+C并不能结束进程,而是仍然打印进程接收到的信号。
signal.alarm()
另外,signal模块提供了一个很有用的函数signal.alarm(),它用于在一定时间后向进程自身发送SIGALRM信号,比如下面的例子设置5秒后向自己发送一个SIGALRM信号。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import signal
import time
def signal_handler(signum, frame):
print('Received signal: ', signum)
while True:
signal.signal(signal.SIGALRM, signal_handler) # 14
signal.alarm(5)
while True:
print('waiting')
time.sleep(1)
来源:https://blog.csdn.net/kongxx/article/details/50976802
0
投稿
猜你喜欢
- 这篇文章主要介绍了Python实现序列化及csv文件读取,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- created页面加载未渲染html之前执行。mounted渲染html后再执行。由于created在html模板生产之前所以无法对Dom进
- 本文实例为大家分享了python之pygame模块实现飞机大战的具体代码,供大家参考,具体内容如下Python飞机大战步骤:1.数据区2.主
- 以前我浏览博客的时候记得别人说过,BCELoss与CrossEntropyLoss都是用于分类问题。可以知道,BCELoss是Binary
- 什么是TensorboardXTensorboard 是 TensorFlow 的一个附加工具,可以记录训练过程的数字、图像等内容,以方便研
- 目录前言数据泵的导入数据泵的导出总结前言今天王子要分享的内容是关于Oracle的一个实战内容,Oracle的数据泵。网上有很多关于此的内容,
- 下载了一个小型的记帐软件,发现这个软件数据库用的是access,很想看看它的数据库结构怎样,结果人家加密了。access的解密小case了,
- 在Mysql中很多表都包含可为NULL(空值)的列,即使应用程序并不需要保存NULL也是如此,这是因为可为NULL是列的默认属性。但我们常在
- python自带日志管理模块logging,使用时可进行模块化配置,详细可参考博文Python日志采集(详细)。但logging配置起来比较
- 一、文件的编码计算机中有许多可用编码:UTF-8GBKBig5等UTF-8是目前全球通用的编码格式除非有特殊需求,否则,一律以UTF-8格式
- 视图:mysql中的视图,视图与表有很多相似的地方,视图也是由若干个字段以及若干条记录构成,视图也可以作为select语句的数据源。视图中保
- 本文实例为大家分享了element跨分页操作选择的具体代码,供大家参考,具体内容如下业务需求:在批量导出或者批量删除的时候会涉及到跨分页导出
- 前言这篇博客将了解什么是特征,角点,哈里斯角点检测(Harris Corner Detection)的概念。并使用cv2.cornerHar
- 在开发过程中我们需要将我们的数据通过图标的形式展现出来,接下来我为大家介绍一个有趣的框架:Echarts。这是一个使用JavaScript实
- 目录GIL 的起源尝试消除 GIL积重难返为什么 Python3 一开始时不去除 GIL最后的话我们知道,在 CPython 中,有一个全局
- 废话不多说了,直接给大家贴代码了,具体代码如下所示:<!DOCTYPE html><html><head>
- 一、日志输出到文件使用模块:logging可以生成自定义等级日志,可以输出日志到指定路径日志等级:debug(调试日志) < info
- 一、简单配置,获取单个网页上的内容。(1)创建scrapy项目scrapy startproject getblog(2)编辑
- 读取csv文件时添加表头/列名有时,我们读取的csv文件数据时发现没有表头/列名,是因为Python读取csv文件数据本来就没有表头,用pa
- groupcache 简介在软件系统中使用缓存,可以降低系统响应时间,提高用户体验,降低某些系统模块的压力.groupcache是一款开源的