2017-01-31 1 views
0

Dies ist vielleicht eine dumme Frage, aber gibt es einen Weg, wenn Sie das Python-Multiprocessing-Modul verwenden, um den mit dem erzeugten Subprozess verbundenen Prozessnamen zu bearbeiten?Benennung von Unterprozessen

Die beabsichtigte Verwendung dafür wäre, in der Lage sein, die Befehlszeilenprogramme top oder ps zu verwenden, um zu überprüfen, welche Teilprozesse noch laufen und möglicherweise hängen geblieben sind. Z.B. MyScript.py genannt, die beginnt n Subprozesse, dann von oben mit, es wäre wünschenswert, um die Prozesse zu sehen, sagen, dass ich ein Skript:

MyScript.py 
MyScript.py <tag1> 
Myscript.py <tag2> 
... 
Myscript.py <tagn> 

statt nur

MyScript.py 
MyScript.py 
MyScript.py 
... 
MyScript.py 

Antwort

0

Nr Python hat keine Kontrolle über die Prozessnamen, die in der Ausgabe des Befehls "top" erscheinen. Das wird vom Betriebssystem verwaltet.

Wenn Sie die Klasse multiprocessing.Process verwenden, ist die Prozess-ID im Attribut PID des Objekts verfügbar. Sie können das also ausdrucken und mit der Ausgabe von top referenzieren. Oder Sie könnten Ihren Programmaufruf mit dem subprocess Modul beginnen lassen und den Ausgang filtern, um Sie mit einem nur den relevanten Ausgang zur Verfügung zu stellen.

+0

Sicherlich kann ich die Hauptverfolgung seiner Threads behalten und sie nach einer Kundenanfrage melden, aber diesmal hoffte ich auf einen einfachen Ausweg. Naja, na danke trotzdem – cpaitor

0

Was Sie könnte tun (obwohl es ein bisschen hacky scheint) ist Ihre Prozesse über subprocess, wie diese zu starten:

import subprocess 
subprocess.call(["python", "myscript.py", "-tag", "tag1"]) 

Dann müssten Sie Ihre __main__ anzupassen in die richtige Funktion zu verzweigen wenn man das -tag Argument sieht. Dies mag als Overkill erscheinen, da ein Subprozess unter Linux nur ein fork() ist und die Python-Datei nicht neu interpretiert usw., aber unter Windows funktioniert Multiprocessing.

+0

Ich dachte darüber nach aber das Problem wäre dann Speicher zwischen dem Subprozess und dem Hauptprozess zu übergeben, also nicht wirklich eine Option in diesem Fall – cpaitor

Verwandte Themen