Umgang mit Funktions-Timeouts in Python
Beim Aufrufen einer Funktion, die möglicherweise ins Stocken gerät, ist es wichtig, über einen Mechanismus zu verfügen, der ordnungsgemäß damit umgeht Vermeiden Sie solche Situationen und verhindern Sie, dass das Skript auf unbestimmte Zeit einfriert. Eine effektive Lösung für dieses Problem besteht darin, eine Zeitüberschreitung für den Funktionsaufruf festzulegen.
Das Python-Signalmodul bietet die notwendige Funktionalität, um einen Signalhandler zu registrieren, der aufgerufen wird, wenn die Funktion die angegebene Zeitüberschreitung überschreitet. So kann es implementiert werden:
import signal def handler(signum, frame): print("Timeout reached!") raise Exception("Function call timed out") def function_to_timeout(): print("Running function...") # Simulate a long-running task for i in range(10): time.sleep(1) # Register the signal handler signal.signal(signal.SIGALRM, handler) # Set a timeout of 5 seconds signal.alarm(5) try: # Call the function function_to_timeout() except Exception as exc: print(exc)
Wenn function_to_timeout() aufgerufen wird, gibt es eine Meldung aus, die angibt, dass es ausgeführt wird. signal.alarm(5) legt ein 5-Sekunden-Timeout fest, nach dem die Handler-Funktion ausgelöst wird. Innerhalb des Handlers wird eine Ausnahme ausgelöst, um den Funktionsaufruf zu beenden.
Mit diesem Ansatz können Sie ein bestimmtes Zeitlimit für die Funktion festlegen und das Skript ordnungsgemäß beenden, falls die Funktion länger als die angegebene Zeit dauert.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit Funktions-Timeouts in Python um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!