Ich versuche, Pythons Signalmodul zu lernen. Bitte beachten Sie das folgende Beispiel:Signalmodul löst keine Ausnahme aus
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
und
import time
def foo():
for i in range(10):
time.sleep(0.5)
print "Sleeping"
Beim Aufruf der Funktion timeoutFn(foo)
folgende gedruckt wird, aber es macht die Ausnahme ausgelöst.
Sollte es nicht die Timeouterror erhöhen? Aber alles, was gedruckt wird, ist
Sleeping Trying to raise exception
und Programm stoppt.
Es funktioniert korrekt. Was erwartest du? Diese Ausnahme wurde erhoben? – Trilliput
Nach dem Drucken "Versuch, Ausnahme auszulösen", bekomme ich keine TimeoutError – Aditya