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