Автор оригинала: 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. Надеюсь в ближайшее время придумать больше уроков.
Ссылка: Официальная документация