raw_input_timeout

Antonio Castro acastro en ciberdroide.com
Vie Mayo 27 09:40:37 CEST 2005


Pretendo imponer un timeout a una entrada por teclado y pensé
usar signal.alarm() pero parece que raw_input() hace algo raro
con la alarma. El programita que pretendo hacer no devuelve el
control pasado el tiempo establecido aunque si se ve afectado el
resultado por el limite de tiempo.

===================8<-----------------------------------------------
#!/usr/bin/python
# -*- coding: latin1 -*-

import  signal

TimeoutExcept= 'Timeout'

def HandlerTimeout(signum, frame):
    raise TimeoutExcept

def raw_input_timeout(prompt, timeout):

    signal.signal(signal.SIGALRM, HandlerTimeout) # Asociar manejador
    signal.alarm(timeout) # Programar la alarma a 'timeout' segundos.
    try:
        print ("Timeout in %d sec." % timeout)
        x=raw_input(prompt)
    except:
        return ''
    signal.alarm(0) # Desactivar la alarma
    return x

x=raw_input_timeout("Nombre : ", 5)
print "<%s>" % x
===================8<-----------------------------------------------


-- 
Un saludo
Antonio Castro

       /\     /\
         \\W//
        _|0 0|_
+-oOOO-(___o___)-OOOo---------------------+
| . . . . U U . Antonio Castro Snurmacher |
| . . . . . . . acastro en ciberdroide.com   |
+()()()---------()()()--------------------+




Más información sobre la lista de distribución Python-es