我希望我的Python脚本能够每隔5秒接收一次定期警报。我已经尝试了以下代码,但它只接收一次警报然后挂起。
import os
import signal
import time
def handler(signum, stack):
print 'Alarm: ', time.ctime()
signal.signal(signal.SIGALRM, handler)
signal.alarm(5)
答案 0 :(得分:1)
什么都没有挂起,没有人收到警报一次。当闹钟第一次响铃时,你的程序已经死了。试试这样:
import signal
import time
def handler(signum, stack):
print 'Alarm: ', time.ctime()
signal.signal(signal.SIGALRM, handler)
signal.alarm(5)
time.sleep(10)
print "interrupted"
当你想要它在一个循环中时,只需将它包装在一个循环中:
signal.signal(signal.SIGALRM, handler)
for i in range(1000):
signal.alarm(5)
time.sleep(10)
print "interrupted #%d" % i
你也可以做无限循环。但是在这种情况下捕获KeyboardInterrupt
以避免像
Alarm: Sat Mar 19 08:28:06 2016
interrupted #2
^CTraceback (most recent call last):
File "alaam.py", line 10, in <module>
time.sleep(10)
KeyboardInterrupt
答案 1 :(得分:0)
因为警报只设置一次。如果你需要定期
试试这个:
def handler(signum, stack):
print 'Alarm: ', time.ctime()
signal.alarm(5)