Multi-threading with a simple timer?

Robin Becker robin at
Tue Jul 3 03:36:43 EDT 2018

On 03/07/2018 07:12, Gregory Ewing wrote:
> import signal, sys
> def timeout(*args):
>      print("Too late!")
>      sys.exit(0)
> signal.signal(signal.SIGALRM, timeout)
> signal.setitimer(signal.ITIMER_REAL, 15)
> data = input("Enter something: ")
> print("You entered: ", data)

This doesn't work in windows (SIGALRM not available see

For completeness I think it needs the handler restoring; this seemed to work for me in linux; I did try using SIG_DFL, but 
apparently that just prints 'Alarm clock' and exits at least

import signal, sys, time

def timeout(*args):
         print("Too late!")

signal.signal(signal.SIGALRM, timeout)
signal.setitimer(signal.ITIMER_REAL, 15)
data = input("Enter something: ")
print("You entered: ", data)
for i in reversed(xrange(15)):
         print i

print 'finished!'

if I leave out the signal.signal(signal.SIGALRM,signal.SIG_IGN) then the timeout function gets called anyway.
Robin Becker

More information about the Python-list mailing list