J'essaie d'apprendre le module de signal de python. S'il vous plaît considérer l'exemple ci-dessous:Le module de signal ne lève pas l'exception
def timeoutFn(func, args=(), kwargs={}, timeout_duration=1, default=None):
import signal
class TimeoutError(Exception):
pass
def handler(signum, frame):
print "Trying to raise exception"
raise TimeoutError
# set the timeout handler
signal.signal(signal.SIGALRM, handler)
signal.alarm(timeout_duration)
try:
result = func(*args, **kwargs)
except TimeoutError as exc:
result = default
finally:
signal.alarm(0)
return result
et,
import time
def foo():
for i in range(10):
time.sleep(0.5)
print "Sleeping"
En appelant la fonction timeoutFn(foo)
ce qui suit est imprimé, mais il soulève l'exception.
Ne devrait-il pas déclencher l'erreur TimeoutError? Mais, tout ce qu'il imprime est
Sleeping Trying to raise exception
et les arrêts du programme.
Cela fonctionne correctement. Qu'attendez-vous? Cette exception a été soulevée? – Trilliput
Après l'impression "Essayer de lever l'exception", je n'obtiens aucun TimeoutError – Aditya