Nichts hängt, nichts empfängt den Alarm einmal. Ihr Programm ist bereits tot, wenn die Alarmglocke das erste Mal klingelt. Versuchen Sie so:
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"
Wenn Sie es in einer Schleife wollen, nur wickeln Sie es in einer Schleife:
signal.signal(signal.SIGALRM, handler)
for i in range(1000):
signal.alarm(5)
time.sleep(10)
print "interrupted #%d" % i
Sie auch Endlosschleife tun können. Aber fangen KeyboardInterrupt
in diesem Fall böse Ausnahmen zu vermeiden, wie
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
Sie könnten den 'sched' Modul in der Standardbibliothek von Interesse finden. https://docs.python.org/2/library/sched.html – cdarke