В документации для signal.setitimer
сказано, что если seconds
arg равно 0, таймер будет очищен:
setitimer(which, seconds, interval=0.0, /)
Sets given itimer (one of ITIMER_REAL, ITIMER_VIRTUAL or ITIMER_PROF).
The timer will fire after value seconds and after that every interval seconds.
The itimer can be cleared by setting seconds to zero.
Returns old values as a tuple: (delay, interval).
Это отражает поведение базового POSIX setitimer системный вызов:
Setting <i>it_value</i> to 0 shall disable a timer, regardless of the value of <i>it_interval</i>.
В системах POSIX it_value является временной структурой , точность которой измеряется в микросекундах. Поэтому, если вы можете допустить очень маленькую задержку перед первым срабатыванием таймера, просто вызовите setitimer с очень маленьким числом, равным 1 микросекунде:
signal.setitimer(signal.ITIMER_REAL, 0.000001, 3.0)