级别初学者 我在Ubuntu上使用python 2.7版本。 我有一个关于Python中的小代码片段的困惑。我知道Python中的while True
意味着无限循环。我有以下代码:随着时间的推移混乱Python中的“while True”循环
#!/usr/bin/env python
import signal
import time
def ctrlc_catcher(signum, frm):
print "Process can't be killed with ctrl-c!"
def alarm_catcher(signum,frame):
print "Got an alarm"
signal.signal(signal.SIGINT, ctrlc_catcher)
signal.signal(signal.SIGALRM, alarm_catcher)
while True:
signal.alarm(1)
pass
当我执行PROGRAMM输出是空白的,当我按下Ctrl-C键将显示“过程不能.....”消息。 我的问题是为什么signal.alarm(1)
不工作? 但是,如果我把使用
while True:
signal.alarm(1)
time.sleep(1)
pass
它,然后报警被触发,并在输出画面我看到后,每一秒“得到一个警报”消息后,一个小小的停顿。 什么是time.sleep(1)这样可以触发警报? 谢谢
我试过这段代码了。我的想法是无限期地每隔1秒产生一次报警,你提到的代码只会产生一次报警。 –
+1 @hobbs是正确的,设置闹钟将取消以前的闹钟,从而结束无限设置/取消闹钟。 – alvits
@pss然后,您必须在警报处理程序中重新安排警报(不确定是否允许)或在主循环中设置要评估的标志。 – glglgl