Variable im LXterminal ausgeben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Knuffi
User
Beiträge: 60
Registriert: Dienstag 28. Oktober 2014, 19:52

Hallo zusammen,
erstmal vor ab, ich bin Laie hinsichtlich Pythonprogrammierung
ist es irgendwie möglich aus einem laufenden Pythonscript Vraiable in einem separatem LXterminal abzufragen?
In meinem Script werden Variabel verändert, wie kann ich diese Werte von Extern auslesen. Natürlich könnte ich im Script mit print arbeiten. Es ist jedoch ein sehr grosses Programm, das permanent läuft und die Variablen erst nach 24 Std ändert. Ich müsste jedesmal 24 Std warten.
Oder gibt es eine Anweisung in Python eine Anweisung alle Variablen lokale und globale auszugeben.
Danke
Gruß
Knuffi
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Pauschal gesagt: Nein, das geht nicht.

Wenn du jetzt allerdings dein Programm so aenderst, dass du es von aussen ansprechen kannst, dann geht das durchaus.
Ist das Programm kein Server, der solche Anfragen beantworten kann, musst du diese Informationen eben proaktiv exportieren.
Das ginge zum Beispiel in dem du das fortlaufend in Dateien rausschreibst.
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

@Knuffi:
Vllt. reicht Dir ja die Erstellung einer Log-Datei, welche bei Änderung der fraglichen Variablen deren Ausprägung rausschreibt. Dann kannst Du u.a. mit `tail -f <datei>` mit einem Terminal darauf zugreifen. Simpelste Log-Funktionalität wäre `print` mit STDOUT-Umleitung, komfortabler geht es mit dem logging Modul.

Wenn Du eine interaktive Abfrage der Werte aus dem Programm heraus ermöglichen willst, wird es schwieriger. Dann muss das Programm einen IPC-Weg hierfür vorhalten, z.B. per Socket oder Pipes (ginge auch mit STDIN+STDOUT). Um das sauber in das Programm einzuarbeiten, wäre wichtig, ob es ergeignisbasiert ist und meistens auf Input wartet - dann geht es ohne extra Thread oder ob es meistens beschäftigt ist - dann bräuchtest Du einen Thread für die Abfrage.
Antworten