Python signal.setitimer,时间为零,后跟signal.pause不工作

Python signal.setitimer,时间为零,后跟signal.pause不工作,python,python-3.x,signals,Python,Python 3.x,Signals,我有以下代码,它按预期工作: import signal def printer(signum, frame): print("hi!") signal.signal(signal.SIGALRM, printer) signal.setitimer(signal.ITIMER_REAL, 0.1, 3.0) while(True): signal.pause() 我想使用signal.setitimer(signal.ITIMER\u REAL,0.0,3.0),但要正

我有以下代码,它按预期工作:

import signal

def printer(signum, frame):
    print("hi!")

signal.signal(signal.SIGALRM, printer)
signal.setitimer(signal.ITIMER_REAL, 0.1, 3.0)

while(True):
    signal.pause()
我想使用
signal.setitimer(signal.ITIMER\u REAL,0.0,3.0)
,但要正确启动计时器需要一点等待:
signal.setitimer(signal.ITIMER\u REAL,0.1,3.0)
。这里发生了什么事?有没有办法立即启动计时器


(仅适用于Linux)

有关
signal.setitimer
的文档说明,如果
秒数
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). 设置计时器(以秒为单位,间隔=0.0,/) 设置给定的itimer(itimer\u REAL、itimer\u VIRTUAL或itimer\u PROF之一)。 计时器将在值秒后触发,然后每隔秒触发一次。 可通过将秒数设置为零来清除itimer。 以元组形式返回旧值:(延迟,间隔)。 这反映了底层POSIX系统调用的行为:

Setting it_value to 0 shall disable a timer, regardless of the value of it_interval. 将it_值设置为0将禁用计时器,无论it_间隔值如何。 在POSIX系统上,it_值为a,其精度以微秒为单位。因此,如果您可以在计时器首次启动之前容忍一个非常小的延迟,只需使用一个非常小的arg调用setitimer,该arg的值只有1微秒:

signal.setitimer(signal.ITIMER_REAL, 0.000001, 3.0) signal.setitimer(signal.ITIMER_REAL,0.000001,3.0)
帮助(signal.setitimer)
注意,将第二个参数
秒设置为零将清除计时器。这反映了底层系统调用的工作方式。如果需要,您可以给它一个小到1微秒的arg,
0.000001
。请设为答案。