≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > Python

python 信号Signal的简单示例

人气:741 时间:2018-10-27

这篇文章主要为大家详细介绍了python 信号Signal的简单示例,具有一定的参考价值,可以用来参考一下。

对python这个高级语言感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!

信号signal 是python进程间进行信号发送的一种机制,其原理是操作系统对进程的控制,是一种程序中断

一个进程一旦接收到信号就会打断原来的程序执行流程来处理信号。

 

那么singanl到底有什么用呢?

siganl的应用:

1. 故障定位技术(进程的底层故障,例如进程突然中断和一些可能性较小的故障)

2. 对进程的流程控制

首先说说与信号signal有关的几个函数

(1)os.kill(pid,sig)

发送一个信号给某个进程

参数解析:

pid 指定发送信号的进程号

sig 要发送的信号代号(需要通过signal模块获取)

(2)signal.alarm(sec) 非阻塞函数

设置时钟信号,在一定时间后给自身发送一个SIGALRM信号

原理: 时钟的创建是进程交由操作系统内核(kernal)帮助创建的时钟和进程之间是异步执行的,当时钟到时,内核会发送信号给进程,进程接收信号进行相应的响应操作.这就是所谓的python异步处理方案.

后面的时钟会覆盖前面的时钟,一个进程只有一个挂起的时钟

 

名词的理解:

异步: 程序在执行中利用内核功能帮助完成必要的辅助操作,不影响应用层持续执行

注意: 这里的同步和异步机制是相对多进程而言的.(注意与多线程的异步执行相区分,之后我会写写多线程的异步机制的相关文章)

在进程中通信这个概念下,只有singal是异步执行的,另外python进程间通信的机制还有pipe(管道),queue(队列),value(共享空间)等等

有机会会将这几种机制进行一个对比

(3)signal.pause()

阻塞进程,等待一个信号.当接收到信号时就会停止阻塞

例如:等待signal()函数的发送

(4)signal.signal(sig,handler)

当进程运行过程中出现故障异常或者需要进程间通信时,操作系统内核/进程发出处理信号

 

参数理解:

sig 要处理的信号名称

handler 信号处理方法 可选值: SIG_DFL 表示默认方法处理

SIG_IGN 表示忽略这个信号(一般为了避免父进程和子进程的互相干扰而使用)

func 自定义函数(实际上是回调函数的一类,信号发生时,调用处理函数,完成之后,回到原来的位置继续执行下面的程序)

自定义函数格式: (跟定义python普通函数的定义没有区别)

def func(sig,frame):

sig : 接收到的信号

frame: 信号结构对象(可以通过结构对象查看信号信息,基本不用)

signal函数实际上是一个异步处理函数,只要执行了该函数,则进程任意时候接收到相应信号都会处理

这里的异步就是上文提到的异步机制,是计算机内核程序与本进程间同时运行,互相不干扰的一种机制,对于进程的正常执行有着关键的作用。

这种异步机制在任何后端编程语言中都是存在的,只不过实现的方式和细节不一样而已。

 

那么singnal怎么用呢?

一般信号signal是在需要检测异常的程序的开头就定义好了,程序顺序向下运行时,一旦捕获到操作系统发出的signal或者其他进程发出的signal

马上就会停止当前的程序运行状态,去处理捕获到的signal。

本文来自:http://www.q1010.com/181/2400-0.html

注:关于python 信号Signal的简单示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:Signal

您可能感兴趣的文章

  • Python使用signal模块实现定时执行的简单示例
上一篇:Python TCP和UDP连接的简单示例
下一篇:Python 单元测试的简单示例
热门文章
  • Python 处理Cookie的菜鸟教程(一)Cookie库
  • python之pandas取dataframe特定行列的简单示例
  • Python解决json.dumps错误::‘utf8’ codec can‘t decode byte
  • Python通过pythony连接Hive执行Hql的脚本
  • Python 三种方法删除列表中重复元素的简单示例
  • python爬虫代码示例
  • Python 中英文标点转换示例
  • Python 不得不知的开源项目解析
  • Python urlencode编码和url拼接实现方法
  • python按中文拆分中英文混合字符串的简单示例
  • 最新文章
    • Python利用numpy三层神经网络的简单示例
    • pygame可视化幸运大转盘的简单示例
    • Python爬虫之爬取二手房信息的简单示例
    • Python之time库的简单示例
    • OpenCV灰度、高斯模糊、边缘检测的简单示例
    • Python安装Bs4及使用的简单示例
    • django自定义manage.py管理命令的简单示例
    • Python之matplotlib 向任意位置添加一个子图(axes)的简单示例
    • Python图像标签标注软件labelme分析的简单示例
    • python调用摄像头并拍照发邮箱的简单示例

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。