Сообщить об ошибке.

Функция setitimer() модуля signal в Python

Установить временной таймер через интервал времени

Синтаксис:

import signal

signal.setitimer(which, seconds, interval=0.0)
signal.getitimer(which)

Параметры:

  • which - временной таймер,
  • seconds - время в секундах,
  • interval=0.0 - интервал в секундах.

Возвращаемое значение:

  • старые значения в виде кортежа (delay, interval).

Описание:

Функция signal.setitimer() устанавливает передаваемый временной таймер, указанный в which на активацию через seconds секунд и каждые interval секунд после этого. Таймер может быть стерт если передать 0 в аргументе seconds.

Функция signal.getitimer() возвращает текущее значение заданного интервала таймера, указанного в аргументе which.

Аргумент which принимает один из signal.ITIMER_REAL, signal.ITIMER_VIRTUAL, signal.ITIMER_PROF.

Аргумент seconds может принимать float, в отличии от функции signal.alarm().

Когда таймер срабатывает, сигнал посылается процессу. Посылаемый сигнал зависит от таймера который используется:

Старые значения возвращаются в виде кортежа (delay, interval).

Попытка передачи недействительного значения интервала таймера вызовет исключение ItimerError.

Доступность: Unix.

Примеры:

import signal, time

def timer():
    return time.strftime('%H:%M:%S', time.localtime())

def handle(signum, frame):
    print(f'{timer()} -> Получение сигнала')

signal.signal(signal.SIGALRM, handle)
signal.setitimer(signal.ITIMER_REAL, 5, 1)

for i in range (10):
    time.sleep(0.5)
    if i == 5:
        print(f'{timer()} -> Засыпаем...')
        itimer = signal.getitimer(signal.ITIMER_REAL)
        print(f'Итерация продолжиться через => {itimer[0]}')
        signal.pause()
    print(i)
    
    
# 0
# 1
# 2
# 3
# 4
# 16:20:28 -> Засыпаем...
# Итерация продолжиться через => 1.996372
# 16:20:30 -> Получение сигнала
# 5
# 6
# 16:20:31 -> Получение сигнала
# 7
# 8
# 16:20:32 -> Получение сигнала
# 9