Essayez l'exemple suivant (créer un fichier qui contient le code follwing et l'exécuter avec python
commande):
from functools import wraps
import errno
import os
import signal
class TimeoutError(Exception):
pass
def timeout(seconds=10, error_message=os.strerror(errno.ETIME)):
def decorator(func):
def _handle_timeout(signum, frame):
raise TimeoutError(error_message)
def wrapper(*args, **kwargs):
signal.signal(signal.SIGALRM, _handle_timeout)
signal.alarm(seconds)
try:
result = func(*args, **kwargs)
finally:
signal.alarm(0)
return result
return wraps(func)(wrapper)
return decorator
@timeout(60)
def print_something():
return raw_input('Enter something: \n')
if __name__ == "__main__":
data = ""
while data != "stop loop":
try:
data = print_something()
except TimeoutError:
continue
Ma réponse est basée sur la réponse acceptée pour cette question SO Timeout function if it takes too long to finish
Je suis en cours d'exécution et il fait le travail, mais ne répète pas si rien n'est entré, il ne se répète qu'une fois que quelque chose est entré dans "données" suis-je faire quelque chose de mal? – Ryan
Ça devrait marcher, avez-vous attendu 60 secondes et rien n'est arrivé? – ettanany
@Ryan S'il vous plaît jeter un oeil à ma réponse éditée – ettanany