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.
@Knollo: statt ein Skript aufzurufen, solltest Du einfach eine Funktion schreiben, die Du direkt aufrufen kannst. Das Abbrechen sollte kooperativ stattfinden, das heißt, innerhalb der Schleife mußt Du auf eine Bedingung prüfen.
Was soll der Trigger dafür sein, dass die Schleife beendet wird?
Die while-Schleife wäre besser eine for-Schleife und man benutzt f-Strings:
import subprocess
subprocess.Popen(['python','QProzess/dummy_script.py'])
x = subprocess.Popen(['python','QProzess/dummy_script.py'])
subprocess.Popen.terminate(x)
unterbricht die Schleife leider nicht....
@ Sirius3: es handelt sich um ein MQTT-Topic welches in einer While-True: Schleife läuft.
Ich bin mir grad unsicher ob es besser ist die Schleife zu löschen und den Topic per subprozess kontinuierlich aufzurufen, oder die Schleife von außen abzubrechen.
Variant 1 scheint der einfachere Weg zu sein?
@Knollo: Also eine der beiden Schleifen sollte das beenden. Warum startest Du das externe Programm zweimal?
Methoden ruft man auf dem jeweiligen Objekt auf und nicht die Methode als Funktion von der Klasse mit dem Objekt als Argument.
Ein MQTT-Topic ist nichts was ”laufen” kann. Statt Code zu zeigen der so ähnlich ist, wie das was tatsächlich läuft, wäre es deutlich sinnvoller Code zu zeigen der Tatsächlich läuft, und zu beschreiben was mit *dem* passieren soll.
Schleifen kann man nicht ”löschen”. Das klingt alles ein wenig komisch.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
Das Topic wird vom Raspi an einen Arduino gesendet. Der sendet die Messwerte zurück an den Raspi. Das läuft auch soweit.
Die Topics werde ich noch anpassen und morgen auf dem Raspi testen.