Live Plot mit threading

Fragen zu Tkinter.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das ist ein seltsames Vorgehen. Wenn du das wirklich so willst, also *IMMER* Datenakquise im eigenen Prozess, und dann eine zweite GUI - dann mach das mit multiprocessing, und von der GUI aus starte einen Workeprozess, der die Daten liest & wegschreibt. Wobei der die dann auch nicht nur in die text-Datei schreiben, sondern eben per Pipe auch gleich an den Hauptprozess kommunizieren kann, so das der dann die Daten darstellt.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@GMAch: mehr als ein Beispiel kann hier aber auch niemand geben:

Code: Alles auswählen

script1 = subprocess.Popen(["script1.py", filename])
GMAch
User
Beiträge: 26
Registriert: Dienstag 4. September 2018, 07:32

Sirius3 hat geschrieben: Mittwoch 10. Oktober 2018, 17:34 @GMAch: mehr als ein Beispiel kann hier aber auch niemand geben:

Code: Alles auswählen

script1 = subprocess.Popen(["script1.py", filename])
Und was muss ich in "script 1" machen damit es den filename einließt? Das ist der Punkt zu dem ich bisher nicht finden konnte.
GMAch
User
Beiträge: 26
Registriert: Dienstag 4. September 2018, 07:32

__deets__ hat geschrieben: Mittwoch 10. Oktober 2018, 16:31 Das ist ein seltsames Vorgehen. Wenn du das wirklich so willst, also *IMMER* Datenakquise im eigenen Prozess, und dann eine zweite GUI - dann mach das mit multiprocessing, und von der GUI aus starte einen Workeprozess, der die Daten liest & wegschreibt. Wobei der die dann auch nicht nur in die text-Datei schreiben, sondern eben per Pipe auch gleich an den Hauptprozess kommunizieren kann, so das der dann die Daten darstellt.
Ich muss ehrlich sagen das ich noch nicht so richtig durch blicke wie ich das mit der Pipe funktioniert.

Speichern muss ich die Daten zudem ohnehin, und die Daten immer in eine Matrix rein zuscheiben schien sich auch nicht gerade positiv auf die Performace des Programms auszuwirken.

Ziel des ganzen ist eh die Leistungsfähigkeit des Detektors zu untersuchen, daher ist Nutzerfreundlichkeit erstmal zweitrangig.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Argumente bekommt man über sys.argv:

Code: Alles auswählen

filename = sys.argv[1]
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

GMAch hat geschrieben: Mittwoch 10. Oktober 2018, 19:11Ich muss ehrlich sagen das ich noch nicht so richtig durch blicke wie ich das mit der Pipe funktioniert.

Speichern muss ich die Daten zudem ohnehin, und die Daten immer in eine Matrix rein zuscheiben schien sich auch nicht gerade positiv auf die Performace des Programms auszuwirken.

Ziel des ganzen ist eh die Leistungsfähigkeit des Detektors zu untersuchen, daher ist Nutzerfreundlichkeit erstmal zweitrangig.
Dir Argumentation ist nicht schlüssig. Es ist garantiert effizienter, Daten stückweise in eine Matrix einzulesen, insbesondere wenn man das rollend machen kann, also historische Daten rausschiebt, und nur neue einfügt, statt einfach periodisch alle Daten mühselig einzulesen, dabei erstmal zu parsen, dann wieder wegzuwerfen, und von vorne anzufangen.

Und multiprocessing hat eigentlich eine ganze Reihe von Beispielen. Du solltest ggf. Mal mit einem kleinen Testprogramm anfangen, statt gleich zu versuchen, alles in das große Ganze zu gießen.
GMAch
User
Beiträge: 26
Registriert: Dienstag 4. September 2018, 07:32

Sirius3 hat geschrieben: Mittwoch 10. Oktober 2018, 19:11 Argumente bekommt man über sys.argv:

Code: Alles auswählen

filename = sys.argv[1]
Danke.

Die Übergabe des Dateinamen klapp s schon mal, nur öffnet sich kein Graph ...


Die Sache mit den Pipes werd ich mir dann vielleicht doch noch mal ansehen wenn ich die Zeit dafür finde ...
Antworten