Confusion over time.sleep in Python "while True" loop

Viewed 2534

Level beginner I am using python 2.7 version on ubuntu. I have a confusion regarding a small code snippet in python. I know that while True in python means to loop infinitely. I have the following code:

#!/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

When I execute the programm the output is blank, when I hit Ctrl-C key it displays "Process can't be....." message. My question is why the signal.alarm(1) is not working ? However if I put a small pause using

while True:
   signal.alarm(1)
   time.sleep(1)
   pass

after it then the alarm gets triggered and in the output screen I see "Got an alarm" message after every second. What is time.sleep(1) doing so that the alarm gets triggered? Thanks

2 Answers
Related