Also die Sache bei 2. ist folgendes: Einmal gestartet lässt es sich nur unsanft beenden - oder es beendet sich nach Programmablauf selbst.
Auf den ersten Blick ist es eher untypisch ein Python-Script durch ein anderes auszuführen. Da du aber kein gegenseitiges blocken haben möchtest, bleibt dir eben nur übrig es im Hintergrund auszuführen oder in einem separaten Thread...
Jeder Prozess (also auch jedes Script) erhält eine eindeutige Kennung: Die sog. Process-ID. Also eine Process-Identifikations-Nummer, kurz: PID
Über diese PID kann der Prozess beeinflusst werden.
Ein Prozess einfach so gewaltsam zu killen ist aber ebenfalls unschön. Besser wäre es in das Script eine gewisse Funktion einzubauen um es sauber zu beenden, es reagiert dann also auf ein Signal woraufhin es sich augenblicklich beendet und ggf sogar auch noch die verwendeten GPIO's zurück setzen kann - würde man es gewaltsam killen geht letzteres nicht (nur wenn man auch darauf reagieren würde, aber das wäre jetzt zu kompliziert :))
Siehe dazu auch > hier <
Problem hierbei is allerdings das Python nicht ohne zusätzliches die PID anderer Prozesse ermitteln kann - ich bevorzuge dafür das Module psutil
Aus einem Python Script heraus ein anderes Script oder Prozess zu starten und dann auch wieder zu killen ist allerdings nichts was ich jemandem Raten würde Es nur zu starten und nicht weiter zu beachten ist nicht wirklich tragisch (& ans Ende einfügen sodass es im Hintergrund ausgeführt wird), aber naja 2 Python Scripts... Da würde ich dann doch lieber Threading bevorzugen
Threading Beispiel:
[code=php]
from __future__ import print_function
import threading, time, sys
# thread docu: http://www.tutorialspoint.com/python/python_multithreading.htm
# Dictionary docu: http://www.tutorialspoint.com/python/python_dictionary.htm
dictionary = {}
def worker():
while dictionary['running']:
print("worker: ..Im super heavy busy..")
time.sleep(2)
print("worker: ..puh..")
time.sleep(2)
try:
print('Starting "worker" Thread')
dictionary['running'] = True
worker_thread = threading.Thread(target=worker)
worker_thread.start()
while True:
time.sleep(4.5)
print('main: keep going!')
except (KeyboardInterrupt, SystemExit):
print("\nStopping 'worker' Thread")
dictionary['running'] = False
print("\nQuit\n")
[/php]Beenden durch drücken von STRG+C