Angenommen, Sie arbeiten mit einem bodigen Code, dem Sie nicht vertrauen können. Gibt es eine Möglichkeit, den Code sicher auszuführen, ohne die Kontrolle über Ihr Skript zu verlieren?
Ein Beispiel könnte eine Funktion sein, die nur zeitweise funktioniert und zufällig / spektakulär ausfallen kann. Wie können Sie es wiederholen, bis es funktioniert? Ich habe versucht, mit dem Threading-Modul zu hacken, hatte aber Schwierigkeiten, einen aufgehängten Thread sauber zu töten.
%Vor%Um sicher gegen Ausnahmen zu sein, verwenden Sie try / except (aber Sie wissen das).
Um vor hängendem Code (Endlosschleife) sicher zu sein, muss ich den Code nur in einem anderen Prozess laufen lassen. Dieser Kindprozess kann vom Vaterprozess aus beendet werden, falls er nicht bald genug beendet wird.
Um vor bösartigem Code sicher zu sein (Dinge tun, die es nicht tun sollte), schauen Sie sich Ссылка an.
In Ihrer realen Anwendung können Sie zu Multiprocessing wechseln? Weil es scheint, dass das, was Sie fragen, mit multiprocessing
+ threading.Timer
+ try/except
.
Sieh dir das an:
%Vor%Das gab mir in einem (glücklichen) Fall:
%Vor%In Ihren Code-Samples haben Sie 4 von 5 Chancen, einen Fehler zu erhalten, also können Sie auch einen Pool oder etwas spawnen, um Ihre Chancen auf ein korrektes Ergebnis zu verbessern.
Tags und Links python multithreading debugging logging