все 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Сообщить о неточности