python訊號處理的優點 python 訊號處理

2021-10-18 14:44:05 字數 1000 閱讀 6403

#!/usr/bin/python#coding:utf-8

importsignal,osdefsignal_fun(signum,frame):print 'recv signal:%d' %signumif __name__ == '__main__':

signal.signal(signal.sigint, signal_fun)

signal.pause()

signal_fun介面就是接收到訊號後自定義的處理方法,signal.pause()呼叫後,會使程序一直阻塞,直到接收到處理訊號,處理完成後退出.

上面的指令碼使用python sign.py執行後,會一直阻塞在signal.pause(),當輸入ctrl+c後,指令碼會接收到訊號,然後列印訊號型別,並結束執行,實際的編碼過程中可以在主程式的main函式中預先註冊需要處理的的訊號.並使用預設的處理邏輯,滿足實際的需要.使用的場景主要是:

1、設定標誌讓程序退出.程序在迴圈處理任務時不能夠使用kill-9.這樣會破壞程序的正常處理流程,使用kill時要等任務處理完才會退出,有時候等待的時間會比較久,因此,實際使用時,可以在接收訊號後,設定程序退出標示,等當前事務處理完,判斷退出標示,然後正常退出程序.

2、忽略某些訊號,linux訊號處理機制可以幫助我們做很多事情,但是遇到不想處理的訊號時需要將其過濾,只處理需要使用的訊號

三、定時傳送訊號

回到第乙個問題,看如下案例:

執行指令碼,指令碼呼叫signal.alarm(5)5秒後給自身傳送乙個alarm訊號,然後程序被阻塞,5秒後,程序收到自身給自身傳送的訊號,處理退出.alarm引數為0時,預設失效.

四、總結

signal.sig* 各種訊號表示

signal.signal(signum,frame) 註冊訊號

signal.pause() 堵塞訊號

signal.alarm() 傳送告警訊號

Python訊號處理

通常我們認為,在try語句中,finally一定會執行。coding utf 8 import time import os import logging try print start try,sleep 30s.print pid s os.getpid time.sleep 30 print ...

訊號機制 Python訊號處理 signal模組

本文是訊號機制三篇記錄中的第二篇,介紹python語言中負責訊號處理的signal模組,並會給出一些小demo 第一篇簡單介紹了linux訊號機制,第三篇則給出關於訊號的乙個應用。三篇組成乙個系列,想起拋磚引玉的作用,希望對大家能有所幫助。該模組提供python中訊號處理的機制,下面是幾個常用的方法...

python 訊號處理模組signal

signal包負責在python程式內部處理訊號,典型的操作包括預設訊號處理函式,暫停並等待訊號,以及定時發出sigalrm等。要注意,signal包主要是針對unix平台 比如linux,mac os 而windows核心中由於對訊號機制的支援不充分 signal包定義了各個訊號名及其對應的整數,...