Python Glossary English

все Python 3Linux · macOSsignalфункция

signal.setitimer()

таймеры

Заводит интервальный таймер с точностью до микросекунд: разовый или повторяющийся. Только Unix (Linux, macOS).

Синтаксис

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

ITIMER_REAL шлёт SIGALRM и делит его с alarm — они сбивают друг друга. ITIMER_VIRTUAL и ITIMER_PROF считают процессорное время, а не настенное: во время sleep они стоят. Ненулевой interval повторяет сигнал бесконечно, поэтому снимать таймер вызовом setitimer(which, 0) обязательно. Отрицательное время — signal.ItimerError, наследник OSError.

Примеры

import signal, time
ticks = []
old = signal.signal(signal.SIGALRM, lambda s, f: ticks.append(s))
signal.setitimer(signal.ITIMER_REAL, 0.01, 0.01)  # каждые 10 мс
try:
    while len(ticks) < 3:
        time.sleep(0.005)
finally:
    signal.setitimer(signal.ITIMER_REAL, 0)  # снять обязательно
    signal.signal(signal.SIGALRM, old)
print(len(ticks))  # → 3
import signal
try:
    signal.setitimer(signal.ITIMER_REAL, -1)
except OSError as e:
    print(isinstance(e, signal.ItimerError))  # → True

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности