Рубрики
Без рубрики

Обработка сигнала Python

Обработка сигнала Python, обработчик сигнала Python, модуль сигнала Python, модуль Python Sigint, Sigalarm, пример сигнализации Python, пример сигнализации Python

Автор оригинала: Pankaj Kumar.

Добро пожаловать в Учебное пособие на обработку сигналов Python. Это будет очень базовый урок о том, как обращаться с сигналами с Python. Компьютер принимает и передает различные команды с помощью сигналов. Операционная система получила хотя бы один сигнал, перечисленный для каждого типа команды, он запрограммирован для получения или генерации. И теперь мы рассмотрим основную обработку сигналов в Python 3.

Что такое сигнал

Сигнал похоже на уведомление о событии. Когда происходит событие в системе, генерируется сигнал для уведомления других программ о событии. Например, если вы нажмете Ctrl + C сигнал называется Сигинт Сгенерировано и любая программа может быть в курсе этого инцидента, просто читая этот сигнал. Сигналы идентифицируются целыми числами.

Обработка сигнала Python

Модуль Python Signal требуется практически для всех основных операций обработки сигналов в Python.

Чтобы понять, как работает обработка сигналов Python, нам нужно знать о «обработке сигналов». Обработчик сигналов – это задача или программа, которая выполняется при обнаружении определенного сигнала. Обработчик принимает два аргумента, а именно, номер сигнала и кадр.

Вы можете просто распечатать линию в обработчике или инициировать некоторую другую задачу в ответ на сигнал. Signal.signal () Функция назначает обработчики к сигналу. Теперь без дальнейшего обсуждения давайте перейдем к примеру.

Пример сигнализации Python

В следующем примере показано, как программировать систему, чтобы ответить на сигнал SIGINT.

import signal  
import time  
  
  
def handler(a, b):  # define the handler  
    print("Signal Number:", a, " Frame: ", b)  
  
signal.signal(signal.SIGINT, handler)  # assign the handler to the signal SIGINT  
  
while 1:  
    print("Press ctrl + c")  # wait for SIGINT  
    time.sleep(10) 

Линии 1 и 2 импортирует модуль сигнала и времени, который будет использоваться в программе.

Обработчик сигнала определяется в строках 5 к 6. Он печатает целочисленное значение сигнала и кадра, который он получает вместе с сигналом.

Линия 8 использует функцию Signal.signal () для назначения обработчика к сигналу SIGINT. Это означает каждый раз, когда ЦП выбирает сигнал «Ctrl + C», вызывается функциональный обработчик.

Строка от 10 до 12 написана, чтобы сохранить программу бежать на неопределенный срок.

Чтобы выполнить эту программу, сохранить код как python_signal.py и открыть окно команды в той же папке. Затем запустите команду Python Python_signal.py в окне команд. Программа должна быть запущена к тому времени. Теперь нажмите Ctrl + C получить следующий результат. Вы можете прекратить программу, просто закрыв командный окно или нажав Ctrl + z Отказ

Ниже приведены изображение, показывают выход, выпускаемый выше приведенный выше пример обработки сигналов Python.

Сигнальная сигнализация Python

Давайте посмотрим другой пример, чтобы продемонстрировать использование Sigalarm сигнал.

import signal  
import time  
  
  
def alarm_handler(signum, stack):  
    print('Alarm at:', time.ctime())  
  
  
signal.signal(signal.SIGALRM, alarm_handler)  # assign alarm_handler to SIGALARM  
signal.alarm(4)  # set alarm after 4 seconds  
print('Current time:', time.ctime())  
time.sleep(6)  # make sufficient delay for the alarm to happen 

Приведенный выше программа сигнализации Python Alarm производит следующий вывод.

В этом примере, примечательно, что задержка выполнена в строке 12, так что программа не прекращается до времени тревоги. Тревога установлена через 4 секунды (строка 10) и Alarm_Handler делает то, что должен сделать сигнал тревоги.

Сводка обработки сигналов Python

Следует помнить, что сигналы не являются одинаковыми для каждой операционной системы. Некоторые из сигналов работают во всех операционных системах, в то время как другие не. И во время работы с потоками только основная нить процесса может принимать сигналы. Так вот и это для обработки сигналов Python. Надеюсь в ближайшее время придумать больше уроков.

Ссылка: Официальная документация