Wie kann ich einen laufenden Prozess beenden, angefangen mit concurrent.futures? Wie ich es verstehe, ist die cancel()
Methode da, um einen Prozess aus der Warteschlange zu entfernen, wenn er nicht ausgeführt wird. Aber was ist mit dem Töten eines laufenden Prozesses? Zum Beispiel, wenn ich einen lange laufenden Prozess habe, und ich möchte es stoppen, wenn ich eine Abbrechen-Schaltfläche in einer GUI drücke.Gibt es eine Möglichkeit, einen laufenden Prozess in concurrent.futures zu stoppen?
7
A
Antwort
0
In diesem Fall wäre es wahrscheinlich besser, eine multiprocessing.Process
für eine lange laufende Aufgabe zu verwenden.
Erstellen Sie eine multiprocessing.Event
vor Starten des neuen Prozesses. Lassen Sie den Kindprozess den Status dieser Event
regelmäßig überprüfen und beenden Sie ihn, wenn Event.is_set()
True
zurückgibt.
In Ihrem GUI-Code muss der Callback mit der Schaltfläche set()
auf dem Event
verbunden sein.
0
Sie können sich meine Antwort auf eine verwandte StackOverflow-Frage here ansehen.
Kurz gesagt, es scheint keine einfache Möglichkeit zu sein, einen laufenden Prozess innerhalb einer concurrent.futures.ProcessPoolExecutor
abzubrechen. Aber Sie können es in einer Hacky Weise erreichen, indem Sie die Kindprozesse manuell beenden.
Verwandte Themen
- 1. Gibt es eine Möglichkeit, einen Magento-Indexer-Prozess zu stoppen?
- 2. Gibt es eine Möglichkeit den couchdb indexer Prozess zu stoppen?
- 3. Gibt es eine Möglichkeit, einen Prozess zu erkennen und darauf zu reagieren/ihn zu stoppen?
- 4. Gibt es eine Möglichkeit, einen laufenden Countdown zu ändern?
- 5. Gibt es eine Möglichkeit, einen Prozess "aufwärmen" zu lassen?
- 6. Gibt es eine Möglichkeit, die Bewegung des Formulars zu stoppen?
- 7. Gibt es eine Möglichkeit, einen Ereignishandler an die Liste der laufenden Prozesse in C# anzuhängen?
- 8. Erlang: Gibt es eine Möglichkeit, geänderte Module mit Rebar in einen bereits laufenden Knoten zu laden?
- 9. Töten Sie einen laufenden Prozess in ColdFusion?
- 10. Gibt es eine Möglichkeit, einen Subprozess mit Pydev zu debuggen?
- 11. Gibt es eine zuverlässige Möglichkeit, einen Thread in C++ zu stoppen? (besonders freistehende)
- 12. Gibt es eine Möglichkeit, einen Befehl in einem Docker-Container zu stoppen
- 13. Gibt es eine Möglichkeit, einem laufenden Hadoop-Cluster Knoten hinzuzufügen?
- 14. Gibt es eine einfache Möglichkeit, einen Jstack für jeden laufenden jvm zu generieren?
- 15. Gibt es eine Möglichkeit, einem untergeordneten Prozess einen Dateideskriptor zu geben, ohne ihn zu schließen?
- 16. On * nix gibt es eine Möglichkeit, einen Prozess zu einem zukünftigen Zeitpunkt zu starten?
- 17. Gibt es eine Möglichkeit, einen angehaltenen Prozess in Powershell zu beenden?
- 18. Gibt es eine Möglichkeit herauszufinden, welcher Benutzer einen Prozess aus dem Prozess task_struct des Prozesses besitzt?
- 19. gibt es eine Möglichkeit, Linux-Prozesse mit Python zu starten/stoppen?
- 20. Gibt es eine Möglichkeit, die Propagation für einen bestimmten Namespace zu stoppen?
- 21. Gibt es eine Möglichkeit, einen Unterordner in Vagrant zu synchronisieren?
- 22. Gibt es eine Möglichkeit, einen String in Flex zu forma
- 23. Gibt es eine Möglichkeit, einen Pfadverlauf in JavaFX zu erstellen?
- 24. Gibt es eine Möglichkeit, einen Zweig in GIT zu sperren
- 25. So erzwingen Supervisord einen Prozess in BACKOFF Status zu stoppen
- 26. Einen Prozess mit CancellationToken stoppen
- 27. Console.WriteLine zu bereits laufenden Prozess
- 28. Wie kommt man in einen laufenden Prozess?
- 29. Gibt es eine Möglichkeit, den Benutzer zu identifizieren, der einen Prozess von/proc/PID
- 30. Gibt es eine Möglichkeit, einen bereits laufenden Browser an selen webdriver in Java anzuhängen?