Seite 1 von 1

Subprocess, zwischen Python-Scripten wechseln

Verfasst: Donnerstag 7. Januar 2016, 14:05
von Nobima
Guten Tag,

ich verwende mehrere Python-Scripte, zwischen denen ich hin und her schalten möchte.

Dazu öffne ich im Hauptscript ein anderes Script mit

Code: Alles auswählen

proc1 = subprocess.Popen (['/usr/bin/python', 'Script1.py'])
Bevor ich das nächste Script öffne, beende ich Script1 mit

Code: Alles auswählen

subprocess.Popen.kill(proc1)
Nun möchte ich aber nicht jedesmal den zuletzt geöffneten Prozess schließen, sondern zwischen den geöffneten Prozessen umschalten ohne diese zu schliessen. Gibt es dafür eine Lösung ?

Re: Subprocess, zwischen Python-Scripten wechseln

Verfasst: Donnerstag 7. Januar 2016, 14:18
von Sirius3
@Nobima: was meinst Du mit "umschalten" genau?

Statt extra Python-Prozesse zu starten, könntest Du die "Skripte" auch als Module importieren und dann vom Hauptprogramm aus auf deren Funktionen zugreifen. Das könnte das "Umschalten" vielleicht vereinfachen.

Re: Subprocess, zwischen Python-Scripten wechseln

Verfasst: Donnerstag 7. Januar 2016, 16:08
von cofi
Prozesse sind unabhaengig, soll heissen ohne IPC zb eben durch Signale (wie bei `kill`) geht da nichts.

Ich schliesse mich aber Sirius3 an: Python durch `subprocess` zu starten riecht komisch. Was willst du denn eigentlich machen?

Daneben: `kill` ist eine Methode auf `subprocess.Popen` Objekten, also auch auf `proc1`: -> `proc1.kill()`

Re: Subprocess, zwischen Python-Scripten wechseln

Verfasst: Donnerstag 7. Januar 2016, 16:15
von BlackJack
Bemerkung am Rande: Falls man sicherstellen möchte dass ein externes Python-Programm mit dem gleichen Interpreter ausgeführt wird wie das aktuell ausgeführte, kann man statt den Pfadnamen zum Pythoninterpreter hart in den Quelltext zu schreiben auch `sys.executable` verwenden. Das würde dann auch funktionieren wenn man auf einem System arbeitet wo unter '/usr/bin/' kein (aktuelles) Python liegt.

Ansonsten schliesse auch ich mich den Vorrednern an und Frage: Was soll denn da eigentlich gelöst werden wofür Dein Vorgehen die Lösung sein soll? Denn selbst wenn man ein Programm hat bei dem mehrere Prozesse Teilaufgaben erledigen sollen, gäbe es auch noch so Dinge wie `multiprocessing` oder `concurrent.futures`.

Re: Subprocess, zwischen Python-Scripten wechseln

Verfasst: Donnerstag 7. Januar 2016, 17:10
von Nobima
Danke für die Antworten,

die verschiedenen Python Scripte sind Programme mit diversen grahpischen Oberflächen (Systemschaltbilder) die jeweils in unterschiedlichen Zeitabständen mit Werten aus einer Datenbank aktualisiert werden. Die Zeitabstände sind jeweils in Tkinter festgelegt und werden mit z.B.
root.after(2000, task)
realisiert.

Ich kann mir noch nicht vorstellen, wie ich das in einem einem Script mit den diversen Modulen umsetzen soll, bin aber für Anregungen dankbar. Das Umschalten zwischen den Systemschaltbildern erfolgt mit einer IR-Fernbedienung.

Re: Subprocess, zwischen Python-Scripten wechseln

Verfasst: Donnerstag 7. Januar 2016, 20:19
von noisefloor
Hallo,

für's Verrständnis: die verschiedenen Skripten generieren alle eine GUI mit Tkinter. Die einzige Aufgaber der GUI ist es, eine Grafik darzustellen?

Gruß, noisefloor

Re: Subprocess, zwischen Python-Scripten wechseln

Verfasst: Donnerstag 7. Januar 2016, 20:59
von Nobima
NIcht ganz, denn das jeweilige GUI holt auch in bestimmten Zeitabständen Werte aus einer Datenbank und stellt sie grafisch als Zahlen bzw. Symbole dar.
Es würde völlig genügen, wenn es gelänge, eines der geöffneten GUI-Script jeweils in den Vordergrund zu bekommen.

Re: Subprocess, zwischen Python-Scripten wechseln

Verfasst: Donnerstag 7. Januar 2016, 21:08
von noisefloor
Hallo,
Es würde völlig genügen, wenn es gelänge, eines der geöffneten GUI-Script jeweils in den Vordergrund zu bekommen.
IMHO würde es völlig genügen, wenn man die Darstellung _einer_ GUI einfach aktualisiert :-)

Gruß, noisefloor

Re: Subprocess, zwischen Python-Scripten wechseln

Verfasst: Donnerstag 7. Januar 2016, 21:40
von Nobima
Klingt vielversprechend, es muss aber möglich sein, die Aufforderung zur Aktualisierung vom Hauptscript an das betreffende geöffnete Script zu übergeben.

Re: Subprocess, zwischen Python-Scripten wechseln

Verfasst: Donnerstag 7. Januar 2016, 21:50
von noisefloor
Hallo,
Klingt vielversprechend, es muss aber möglich sein, die Aufforderung zur Aktualisierung vom Hauptscript an das betreffende geöffnete Script zu übergeben.
Nee, so meinte ich das nicht. Das solltest nur _eine_ GUI habe und die enthält alles. Tkinter kennt ja z.B. auch Tabs.

Gruß, noisefloor

Re: Subprocess, zwischen Python-Scripten wechseln

Verfasst: Dienstag 12. Januar 2016, 17:32
von Nobima
Ich habe es mit "xdotool" gelöst.
Damit kann ich aus Python heraus festlegen, welches Fenster (Script) im Vordergrund angezeigt wird. Die anderen Scripte laufen nicht sichtbar dahinter weiter.