Unterbrechen einer Funktion mit Zeitüberschreitung in Python
Wenn Funktionen aufgerufen werden, die möglicherweise auf unbestimmte Zeit anhalten und die weitere Ausführung des Skripts verhindern, ist dies erforderlich Implementieren Sie einen Timeout-Mechanismus. Das signal-Paket von Python bietet eine Lösung für dieses Problem.
Das signal-Paket, das hauptsächlich in UNIX-Systemen verwendet wird, ermöglicht es Ihnen, ein Timeout für eine bestimmte Funktion einzurichten. Wenn die Funktion das angegebene Timeout überschreitet, wird ein Signal ausgelöst, um die Ausführung zu unterbrechen.
Beispiel:
Stellen Sie sich eine Funktion loop_forever() vor, die auf unbestimmte Zeit ausgeführt werden kann. Wir müssen diese Funktion aufrufen, aber ein Timeout von 5 Sekunden festlegen. Wenn die Funktion länger als 5 Sekunden dauert, möchten wir ihre Ausführung abbrechen.
import signal # Register a handler for the timeout def handler(signum, frame): print("Timeout! Cancelling function execution.") raise Exception("Timeout exceeded!") # Register the signal function handler signal.signal(signal.SIGALRM, handler) # Define a timeout of 5 seconds signal.alarm(5) try: loop_forever() except Exception as e: print(str(e)) # Cancel the timer if the function finishes before timeout signal.alarm(0)
In diesem Beispiel wird nach 5 Sekunden die Handler-Funktion aufgerufen, was eine Ausnahme auslöst. Diese Ausnahme wird im übergeordneten Code abgefangen, der dann den Timer abbricht und die Ausführung der Funktion „loop_forever()“ beendet.
Das obige ist der detaillierte Inhalt vonWie unterbreche ich die Ausführung einer Python-Funktion mit einem Timeout?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!