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
。请设为答案。