最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 如何理解python中信号Signal?

    正文概述    2020-02-02   489

    如何理解python中信号Signal?

    信号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。


    起源地下载网 » 如何理解python中信号Signal?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元