[Python] So löschen Sie einfach einen untergeordneten Prozess, der durch Multiprozess gestartet wurde, von einem anderen Prozess

Als ich einen Test für ein Programm schrieb, das als Daemon ausgeführt wird, musste ich ihn nach einer bestimmten Zeit beenden.

Bedarf

 main process
   |
   |--- subprocess1
   |--- subprocess2
   |--- subprocess3

Die Unterprozesse werden wie folgt gestartet.

# main.py
from multiprocessing import Process

ps = [
    Process(target=hogehoge1),
    Process(target=hogehoge2),
    Process(target=hogehoge3),
]
for i in ps:
    i.start()

** Was du machen willst **

Löschen Sie auf irgendeine Weise alle Unterprozesse aus einem anderen Prozess.

Erstes ZEICHEN (Strg + C)

Wenn ich es im Terminal laufen lasse, kann ich mit diesem alles löschen, also werde ich es versuchen.

# other.py
import subprocess
from time import sleep
from signal import SIGINT

proc = subprocess.Popen(cmd)
sleep(5) #warte ein wenig
proc.send_signal(SIGINT)

Ergebnis

Nur die Eltern verschwinden und die Teilprozesse bleiben erhalten.

Fangen Sie SIGINT als Elternteil

Auf diese Weise hat es funktioniert. Der Elternteil sollte ein Signal haben (aus dem vorherigen Experiment), also entfernen wir den Unterprozess vom Elternteil. Ändern Sie die übergeordnete Datei.

# main.py
from signal import SIGINT
import signal

def signalHandler(signal, handler) :
    for i in ps:
        i.terminate()
    exit(0)

if __name__ == "__main__":
    signal.signal(signal.SIGINT,  signalHandler)
    signal.signal(signal.SIGTERM, signalHandler)

Hinweis: Wenn Sie exit (0) vergessen, können Sie den übergeordneten Prozess nicht beenden.

Zusammenfassung

Es ist nicht gut, mehrere Prozesse in der Atmosphäre durchzuführen.

Recommended Posts

[Python] So löschen Sie einfach einen untergeordneten Prozess, der durch Multiprozess gestartet wurde, von einem anderen Prozess
So öffnen Sie einen Webbrowser über Python
So generieren Sie ein Python-Objekt aus JSON
So speichern Sie eine von Python gekratzte Tabelle in CSV
[Python] So rufen Sie eine Funktion von c aus Python auf (ctypes edition)
Verwendung der NUITKA-Utilities-Hinweis-Kompilierung zum einfachen Erstellen einer ausführbaren Datei aus einem Python-Skript
[Python] So erstellen Sie eine Liste von Zeichenfolgen Zeichen für Zeichen
So schneiden Sie ein Block-Multiple-Array aus einem Multiple-Array in Python
So führen Sie ein Python-Programm in einem Shell-Skript aus
So starten Sie AWS Batch über die Python-Client-App
So überschreiben Sie eine benutzerdefinierte Typmethode, die von Python Swig generiert wird
Erste Schritte mit Python
So greifen Sie über Python auf Wikipedia zu
Python, um von einer anderen Sprache zu wechseln
So erhalten Sie eine Zeichenfolge aus einem Befehlszeilenargument in Python
[Python] So erhalten und ändern Sie Zeilen / Spalten / Werte aus einer Tabelle.
Node.js: So töten Sie Nachkommen eines Prozesses, der von child_process.fork () gestartet wurde
Übergeben Sie die Liste von Python an C ++ als Referenz in pybind11
So entfernen Sie Duplikate aus einer Python-Liste unter Beibehaltung der Reihenfolge.
So erstellen Sie einen Klon aus Github
So konvertieren Sie das Format einfach aus Markdown
[Python] Wie man eine Klasse iterierbar macht
Führen Sie ein Skript von Jupyter aus, um es zu verarbeiten
[Python] So konvertieren Sie eine zweidimensionale Liste in eine eindimensionale Liste
So aktualisieren Sie Google Sheets von Python
[Python] So invertieren Sie eine Zeichenfolge
So erhalten Sie den Wert aus dem Parameterspeicher in Lambda (mit Python)
Wie bekomme ich Stacktrace in Python?
Zugriff auf RDS von Lambda (Python)
So bedienen Sie IOT-Haushaltsgeräte von Siri aus einfach durch API-Hacking
So erstellen Sie ein Repository aus Medien
So führen Sie Maya Python-Skripte aus
Sortieren durch Angabe einer Spalte im Python Numpy-Array.
So legen Sie Google Text & Tabellen in einem Ordner zusammen in einer TXT-Datei mit Python ab
[Python] So sortieren Sie nach dem N-ten M-ten Element eines mehrdimensionalen Arrays
So installieren Sie die Python-Bibliothek, die von Pharmaunternehmen verwendet werden kann
Senden Sie eine Nachricht von Slack an einen Python-Server
[Python] So zeigen Sie die Elemente der Liste nebeneinander an
Lesen einer CSV-Datei mit Python 2/3
So löschen Sie einen Taple in einer Liste (Python)
Einbetten von Variablen in Python-Strings
So erstellen Sie ein Funktionsobjekt aus einer Zeichenfolge
Studie aus Python Hour7: Verwendung von Klassen
So erstellen Sie eine JSON-Datei in Python
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
So fügen Sie einen Suchpfad für Python-Module hinzu
Wie man gut mit Linux-Befehlen aus Python umgeht
So extrahieren Sie den Koeffizienten aus der Minutenformel
So löschen Sie die von Python ausgegebenen Zeichen
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
[Python] So sortieren Sie Instanzen nach Instanzvariablen
Lesen Sie mit Python Zeile für Zeile aus der Datei
Zubu Amateur will Python starten
So veröffentlichen Sie GitHub-Seiten mit Pelican, einem statischen HTML-Generator von Python
So stellen Sie pyenv unter Amazon Linux und Ubuntu ein, um eine Python 3.6.0-Umgebung zu erstellen
So überprüfen Sie in Python, ob sich eines der Elemente einer Liste in einer anderen Liste befindet
[Verarbeitung natürlicher Sprache / NLP] Einfache Rückübersetzung durch maschinelle Übersetzung mit Python