對(duì)Python信號(hào)處理模塊signal詳解
Python中對(duì)信號(hào)處理的模塊主要是使用signal模塊,但signal主要是針對(duì)Unix系統(tǒng),所以在Windows平臺(tái)上Python不能很好的發(fā)揮信號(hào)處理的功能。
要查看Python中的信號(hào)量,可以使用dir(signal)來查看。
signal.signal()
在signal模塊中,主要是使用signal.signal()函數(shù)來預(yù)設(shè)信號(hào)處理函數(shù)
singnal.signal(signalnum, handler)
其中第一個(gè)參數(shù)是信號(hào)量,第二個(gè)參數(shù)信號(hào)處理函數(shù)。
下面看個(gè)簡(jiǎn)單的例子,其中
定義了一個(gè)信號(hào)處理函數(shù)signal_handler(),用來處理程序接收到信號(hào)時(shí)執(zhí)行的操作
一段循環(huán)等待發(fā)送信號(hào)
#!/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)
運(yùn)行上面的程序
python test.py
然后另外開一個(gè)終端,找到對(duì)應(yīng)的進(jìn)程,并執(zhí)行下面的kill操作
kill -1 <pid> kill -2 <pid> kill -3 <pid> kill -14 <pid> kill -15 <pid> kill -18 <pid> kill -9 <pid> # 最后殺死進(jìn)程
此時(shí)可以看到test.py的輸出,打印的就是具體接收到的信號(hào)。
這里注意一點(diǎn)就是程序中注冊(cè)了SIGINT信號(hào),所以在運(yùn)行程序后使用CTRL+C并不能結(jié)束進(jìn)程,而是仍然打印進(jìn)程接收到的信號(hào)。
signal.alarm()
另外,signal模塊提供了一個(gè)很有用的函數(shù)signal.alarm(),它用于在一定時(shí)間后向進(jìn)程自身發(fā)送SIGALRM信號(hào),比如下面的例子設(shè)置5秒后向自己發(fā)送一個(gè)SIGALRM信號(hào)。
#!/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)
以上這篇對(duì)Python信號(hào)處理模塊signal詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
numpy創(chuàng)建神經(jīng)網(wǎng)絡(luò)框架
本文介紹了使用numpy從零搭建了一個(gè)類似于pytorch的深度學(xué)習(xí)框架,可以用在很多地方,有需要的朋友可以自行參考一下2021-08-08python中l(wèi)ogging包的使用總結(jié)
本篇文章給大家詳細(xì)講述了python中l(wèi)ogging包的使用的相關(guān)知識(shí)點(diǎn)以及原理分析,有興趣的朋友可以參考學(xué)習(xí)下。2018-02-02Python利用遞歸實(shí)現(xiàn)文件的復(fù)制方法
今天小編就為大家分享一篇Python利用遞歸實(shí)現(xiàn)文件的復(fù)制方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10基礎(chǔ)語音識(shí)別-食物語音識(shí)別baseline(CNN)
這篇文章主要介紹了一個(gè)基礎(chǔ)語音識(shí)別題目-食物語音識(shí)別baseline(CNN),代碼詳細(xì)嗎,對(duì)于想要學(xué)習(xí)語音識(shí)別的朋友可以參考下2021-04-04Python正確調(diào)用 jar 包加密得到加密值的操作方法
這篇文章主要介紹了Python 正確調(diào)用 jar 包加密得到加密值的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08