Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70% Забронировать скидку
07 Июл 2023
1 мин
504

Работа с сигналом SIGINT в Python

В процессе работы с Python часто возникает необходимость управлять процессами и соединениями с базами данных. Иногда такие процессы нужно останавливать,

В процессе работы с Python часто возникает необходимость управлять процессами и соединениями с базами данных. Иногда такие процессы нужно останавливать, совершая при этом необходимую очистку. Для этого можно использовать сигнал SIGINT, который генерируется при нажатии комбинации клавиш Ctrl+C.

В качестве примера рассмотрим скрипт на Perl, который при получении сигнала SIGINT производит очистку и завершает работу:

$SIG{'INT'} = 'exit_gracefully';

sub exit_gracefully {
    print "Caught ^C \n";
    exit (0);
}

Чтобы реализовать аналогичное поведение в Python, необходимо использовать модуль signal стандартной библиотеки Python.

В этом модуле имеется функция signal(), которая позволяет задать обработчик для указанного сигнала. Эта функция принимает два аргумента: тип сигнала и функцию-обработчик.

В качестве первого аргумента передается константа signal.SIGINT, а второй аргумент — это функция, которая будет вызвана при получении сигнала. Функция-обработчик должна принимать два аргумента: номер сигнала и текущий стек вызовов.

Для описания ситуации выше на Python, код будет выглядеть следующим образом:

import signal
import sys

def exit_gracefully(signal, frame):
    print('Caught SIGINT')
    sys.exit(0)

signal.signal(signal.SIGINT, exit_gracefully)

Таким образом, при получении сигнала SIGINT скрипт на Python будет корректно завершать свою работу, производя необходимую очистку. Это позволяет избежать возникновения ошибок и облегчает управление ресурсами.

Добавить комментарий

Подарок
Забрать подарок