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
https://stackoverflow.com/questions/6947065/right-way-to-run-some-code-with-timeout-in-python)

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!")
        sys.exit(0)

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

print 'finished!'


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

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to