婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > python中對信號的處理詳解

python中對信號的處理詳解

熱門標簽:銀川電話機器人電話 上海正規(guī)的外呼系統(tǒng)最新報價 預覽式外呼系統(tǒng) 如何地圖標注公司 外賣地址有什么地圖標注 企業(yè)彩鈴地圖標注 長春極信防封電銷卡批發(fā) 煙臺電話外呼營銷系統(tǒng) 電銷機器人錄音要學習什么

什么是信號

信號(signal)-- 進程間通訊的一種方式,也可作為一種軟件中斷的方法。一個進程一旦接收到信號就會打斷原來的程序執(zhí)行來按照信號進行處理。

簡化術語,信號是一個事件,用于中斷運行功能的執(zhí)行。信號始終在主Python線程中執(zhí)行。對于信號,這里不做詳細介紹。

Python封裝了操作系統(tǒng)的信號功能的庫 singal 的庫。singal 庫可以使我們在python程序中中實現(xiàn)信號機制。

Python的信號處理

首先需要了解Python為什么要提供 signal Library。信號庫使我們能夠使用信號處理程序,以便當接收信號時都可以執(zhí)行自定義任務。

Mission:當接收到信號時執(zhí)行信號處理方法

可以通過使用 signal.singal() 函數(shù)來實現(xiàn)此功能

Python對信號的處理

通常情況下Python 信號處理程序總是會在主 Python 主解析器的主線程中執(zhí)行,即使信號是在另一個線程中接收的。 這意味著信號不能被用作線程間通信的手段。 你可以改用 threading 模塊中的同步原語。

Python信號處理流程,需要對信號處理程序(signal handling )簡要說明。signal handling 是一個任務或程序,當檢測到特定信號時,處理函數(shù)需要兩個參數(shù),即信號id signal number (Linux 中 1-64),與堆棧幀 frame。通過相應信號啟動對應 signal handling ,signal.signal() 將為信號分配 處理函數(shù)。

如:當運行一個腳本時,取消,此時是捕獲到一個信號,可以通過捕獲信號方式對程序進行異步的優(yōu)雅處理。通過將信號處理程序注冊到應用程序中:

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 module>
    while True:
KeyboardInterrupt


信號枚舉

信號的表現(xiàn)為一個int,Python的信號庫有對應的信號枚舉成員

其中常用的一般有,

SIGINT control+c

SIGTERM 終止進程 軟件終止信號

SIGKILL 終止進程 殺死進程

SIGALRM 超時


信號 說明
SIG_DFL
SIG_IGN 標準信號處理程序,它將簡單地忽略給定的信號
SIGABRT SIGIOT 來自 abort 的中止信號。
abort 導致異常進程終止。通常由檢測內(nèi)部錯誤或嚴重破壞約束的庫函數(shù)調(diào)用。例如,如果堆的內(nèi)部結(jié)構(gòu)被堆溢出損壞, malloc() 將調(diào)用 abort()
SIGALRM
SIGVTALRM
SIGPROF
如果你用 setitimer 這一類的報警設置函數(shù)設置了一個時限,到達時限時進程會接收到 SIGALRM, SIGVTALRM 或者 SIGPROF。但是這三個信號量的含義各有不同,SIGALRM 計時的是真實時間,SIGVTALRM計時的是進程使用了多少CPU時間,而 SIGPROF 計時的是進程和代表該進程的內(nèi)核用了多少時間。
SIGBUS 總線發(fā)生錯誤時,進程接收到一個SIGBUS信號。舉例來說,存儲器訪問對齊或者或不存在對應的物理地址都會產(chǎn)生SIGBUS信號。
SIGCHLD 當子進程終止、被中斷或被中斷后恢復時,SIGCHLD信號被發(fā)送到進程。該信號的一個常見用法是指示操作系統(tǒng)在子進程終止后清理其使用的資源,而不顯式調(diào)用等待系統(tǒng)調(diào)用。
SIGILL 非法指令。當進程試圖執(zhí)行非法、格式錯誤、未知或特權(quán)指令時,SIGILL信號被發(fā)送到該進程。
SIGKILL 發(fā)送SIGKILL信號到一個進程可以使其立即終止(KILL)。與SIGTERM和SIGINT相不同的是,這個信號不能被捕獲或忽略,接收過程在接收到這個信號時不能執(zhí)行任何清理。 以下例外情況適用:
SIGINT 來自鍵盤的中斷 (CTRL + C)。 KeyboardInterrupt
SIGPIPE 當一個進程試圖寫入一個沒有連接到另一端進程的管道時,SIGPIPE信號會被發(fā)送到該進程。
**SIGTERM ** 終結(jié)信號。 KILL -15 |KILL
SIGUSR1
SIGUSR2
用戶自定義信號
SIGWINCH 終端窗口大小已變化
SIGHUP 在控制終端上檢測到掛起或控制進程的終止。

Reference:[signal-wikipedia](

信號函數(shù)

Python的信號庫中也有很多常用的函數(shù)

signal.alarm(time)

創(chuàng)建一個 SIGALRM 類型的信號,time為預定的時間,設置為0時取消先前設置的定時器

signal.pause()

可以使代碼邏輯處理過程睡眠,直到收到信號,然后調(diào)用對應的handler。

import signal
import os
import time

def do_exit(sig, stack):
    raise SystemExit('Exiting')

signal.signal(signal.SIGINT, signal.SIG_IGN)
signal.signal(signal.SIGUSR1, do_exit)

print('My PID:', os.getpid())

signal.pause()

在執(zhí)行時,忽略了ctrl + c的信號,對USR1做退出操作

signal.setitimer(which, seconds, interval)

which: signal.ITIMER_REAL,signal.ITIMER_VIRTUAL 或 signal.ITIMER_PROF

seconds:多少秒后觸發(fā)which。seconds設置為0可以清除which的計時器。

interval:每隔interval秒后觸發(fā)一次

os.getpid()

獲得當前執(zhí)行程序的pid

Windows下信號的使用

在Linux中,可以通過任何可接受的信號枚舉值作為信號函數(shù)的參數(shù)。在Windows中,SIGABRT, SIGFPE, SIGINT, SIGILL, SIGSEGV, SIGTERM, SIGBREAK。

當signal handling需要參數(shù)怎么辦

在一些時候,signal handling的操作需要對應主進程傳遞進來一些函數(shù),而在整個項目中執(zhí)行過程中的變量與 signal handling不處于一個作用域中,而signal.signal() 不能傳遞其他的參數(shù),這個時候可以使用 partial 創(chuàng)建一個閉包來解決這個問題。

例如:

import signal
import os
import sys
import time

from functools import partial

"""
這里signal frame默認參數(shù)需要放到最后
"""
def signal_handler(test_parameter1, test_parameter2, signal_num, frame):
    print "signal {} exit. {} {}".format(signal_num, test_parameter1, test_parameter2)
    sys.exit(1)


a=1
b=2
signal.signal(signal.SIGINT, partial(signal_handler, a, b) )
print('My PID:', os.getpid())

signal.pause()

忽略信號

signal定義了忽略接收信號的方法。為了實現(xiàn)信號的處理,需要使用signal.signal() 將默認的信號與signal.SIG_IGN 注冊,即可忽略對應的信號中斷,kill -9 不可忽略 。

import signal
import os
import time

def receiveSignal(signalNumber, frame):
    print('Received:', signalNumber)
    raise SystemExit('Exiting')
    return

if __name__ == '__main__':
    # register the signal to be caught
    signal.signal(signal.SIGUSR1, receiveSignal)

    # register the signal to be ignored
    signal.signal(signal.SIGINT, signal.SIG_IGN)

    # output current process id
    print('My PID is:', os.getpid())

    signal.pause()

常用的信號

import signal
import os
import time
import sys

def readConfiguration(signalNumber, frame):
    print ('(SIGHUP) reading configuration')
    return

def terminateProcess(signalNumber, frame):
    print ('(SIGTERM) terminating the process')
    sys.exit()

def receiveSignal(signalNumber, frame):
    print('Received:', signalNumber)
    return
 
    signal.signal(signal.SIGHUP, readConfiguration)
    signal.signal(signal.SIGINT, receiveSignal)
    signal.signal(signal.SIGQUIT, receiveSignal)
    signal.signal(signal.SIGILL, receiveSignal)
    signal.signal(signal.SIGTRAP, receiveSignal)
    signal.signal(signal.SIGABRT, receiveSignal)
    signal.signal(signal.SIGBUS, receiveSignal)
    signal.signal(signal.SIGFPE, receiveSignal)
    #signal.signal(signal.SIGKILL, receiveSignal)
    signal.signal(signal.SIGUSR1, receiveSignal)
    signal.signal(signal.SIGSEGV, receiveSignal)
    signal.signal(signal.SIGUSR2, receiveSignal)
    signal.signal(signal.SIGPIPE, receiveSignal)
    signal.signal(signal.SIGALRM, receiveSignal)
    signal.signal(signal.SIGTERM, terminateProcess)

總結(jié)

到此這篇關于python中對信號處理的文章就介紹到這了,更多相關python信號處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 對Python信號處理模塊signal詳解
  • python GUI庫圖形界面開發(fā)之PyQt5信號與槽事件處理機制詳細介紹與實例解析
  • python多線程下信號處理程序示例

標簽:佳木斯 西寧 湖北 宜昌 上饒 潮州 珠海 盤錦

巨人網(wǎng)絡通訊聲明:本文標題《python中對信號的處理詳解》,本文關鍵詞  python,中,對,信,號的,處理,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關。
  • 相關文章
  • 下面列出與本文章《python中對信號的處理詳解》相關的同類信息!
  • 本頁收集關于python中對信號的處理詳解的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    精品美女被调教视频大全网站| 国产一区二区精品久久99| 综合色中文字幕| 精品久久五月天| 精品精品欲导航| 成人动漫av在线| 日本欧美韩国一区三区| 精品免费国产一区二区三区四区| 欧美日韩国产免费| 91精品婷婷国产综合久久性色| 色综合久久天天| 91丨九色丨黑人外教| 日本精品视频一区二区| 欧美日韩不卡一区| 精品国产三级电影在线观看| 精品国产麻豆免费人成网站| 91精品国产综合久久精品麻豆| 欧美一区二区性放荡片| 久久久美女毛片| 亚洲激情中文1区| 青娱乐精品在线视频| 国产精品一区在线观看乱码| 色综合久久88色综合天天| 日韩午夜在线影院| 亚洲国产精品久久人人爱蜜臀 | 日韩精品电影一区亚洲| 精品无人码麻豆乱码1区2区| 欧美亚洲日本国产| 国产精品护士白丝一区av| 国产一区二区三区美女| 99在线精品视频| 国产精品一二三四区| 精品区一区二区| www.亚洲国产| 美女视频黄免费的久久| 国产精品美女久久久久高潮| 欧美成人aa大片| 91精品国产综合久久国产大片 | 7777精品伊人久久久大香线蕉经典版下载 | 91麻豆精品国产自产在线观看一区 | 国产精品国产馆在线真实露脸| 国产在线观看免费一区| 精品国产电影一区二区| 国产一区二区影院| 国产精品欧美久久久久一区二区| 成人免费视频app| 亚洲欧美另类综合偷拍| 91精品国产综合久久精品性色| 亚洲成人精品一区二区| 日韩一区二区视频| 成人综合在线网站| 一区二区三区**美女毛片| 91精品午夜视频| 国产成人午夜精品影院观看视频| 国产日韩欧美精品电影三级在线| 国产在线日韩欧美| 亚洲高清视频中文字幕| 国产精品免费久久| 91精品国产麻豆国产自产在线| 亚洲激情成人在线| 欧美午夜精品一区| 精品一区二区免费视频| 中文字幕一区二区三区在线播放 | 免费观看在线综合| 亚洲丝袜自拍清纯另类| 日韩午夜av电影| 奇米综合一区二区三区精品视频 | 日韩国产精品久久久| 国产欧美日韩不卡| 日韩精品一区二区三区视频播放| 91蝌蚪porny九色| 成人黄色综合网站| 91视频www| 国产91在线看| 国产不卡高清在线观看视频| 国产成人在线免费| 国产成人8x视频一区二区| 精品无人码麻豆乱码1区2区| 麻豆精品一区二区三区| 麻豆精品久久久| 成人免费毛片片v| 色狠狠综合天天综合综合| 欧美亚洲一区二区在线| 欧美日韩国产一二三| 日韩精品一区国产麻豆| 久久综合给合久久狠狠狠97色69| 欧美日韩极品在线观看一区| 91精品国产一区二区| 精品久久久久一区二区国产| 国产喷白浆一区二区三区| 中文字幕不卡在线观看| 日韩理论电影院| 日韩成人一级片| 9色porny自拍视频一区二区| 欧美群妇大交群中文字幕| 久久久精品影视| 麻豆成人免费电影| 在线视频欧美精品| 欧美国产乱子伦| 麻豆成人久久精品二区三区红| 丁香六月久久综合狠狠色| 欧美一区二区三区色| 国产三级欧美三级日产三级99| 一片黄亚洲嫩模| 色婷婷av一区| 日日骚欧美日韩| 欧美高清视频在线高清观看mv色露露十八 | 色婷婷av一区二区三区软件| 日韩三级在线免费观看| 综合激情成人伊人| 91免费版在线看| 亚洲午夜久久久久| 91精品国产免费久久综合| 日本不卡视频在线| 国产亚洲综合性久久久影院| 亚洲柠檬福利资源导航| 欧美日韩色综合| 久久精品一区二区三区四区| 国产精品日日摸夜夜摸av| 黄一区二区三区| 欧美人动与zoxxxx乱| 国产精品人妖ts系列视频| 视频一区视频二区中文字幕| 91老师片黄在线观看| 亚洲欧美色一区| 欧美日韩成人综合| 精品在线一区二区三区| 久久久美女艺术照精彩视频福利播放| 免费观看30秒视频久久| 91麻豆精东视频| 精品国产电影一区二区| 男女性色大片免费观看一区二区 | 国产精品乡下勾搭老头1| 久久亚洲精精品中文字幕早川悠里 | 欧美不卡激情三级在线观看| 全部av―极品视觉盛宴亚洲| 国产欧美日韩在线观看| eeuss鲁片一区二区三区| 午夜久久久久久久久久一区二区| 精品国产一区二区三区忘忧草 | 国产高清无密码一区二区三区| 亚洲欧美日韩电影| 日韩精品一区二区在线观看| 99久久精品国产导航| 日韩高清一级片| 一区二区三区成人| 亚洲欧洲日韩在线| 国产日本欧美一区二区| 久久精品视频在线看| 日韩免费观看高清完整版| 欧美日韩1区2区| 欧美乱熟臀69xxxxxx| 91激情五月电影| 欧美亚洲一区三区| 91精品久久久久久久99蜜桃 | 国产精品亲子伦对白| 26uuu欧美| 欧洲另类一二三四区| 免费观看成人鲁鲁鲁鲁鲁视频| 精品一区二区影视| 久久精品噜噜噜成人av农村| 亚洲午夜羞羞片| 亚洲精品免费在线| 日韩精品乱码免费| 美女免费视频一区二区| 国产精品亚洲成人| 高清日韩电视剧大全免费| 91丝袜国产在线播放| 69堂精品视频| 日韩一区二区麻豆国产| 国产女同互慰高潮91漫画| 成人免费视频播放| 日本高清不卡一区| 欧美午夜精品一区二区蜜桃 | 久国产精品韩国三级视频| 久久er99热精品一区二区| 国产精品一二三区在线| 91亚洲国产成人精品一区二三| 日本韩国视频一区二区| 久久久五月婷婷| 亚洲男人电影天堂| 激情都市一区二区| 日本久久一区二区三区| 久久久久久久久岛国免费| 欧美优质美女网站| 91精品啪在线观看国产60岁| 精品国产免费视频| 一区二区三区四区在线| 国产一区二区福利视频| 99精品久久99久久久久| 久久久精品tv| 紧缚捆绑精品一区二区| 欧美日韩免费一区二区三区视频| 国产色一区二区| 麻豆freexxxx性91精品| 欧美亚洲综合网| 国产精品夫妻自拍| 91亚洲男人天堂| 欧美精品tushy高清| 国产成人av电影|