2016-05-06 1 views
0

Ich habe eine Python-Funktion, die einige LEDs anschaltet, dann pausiert (time.sleep) und dann die LEDs über den Raspberry Pi ausschaltet. Es ist ein bisschen komplizierter als das - es ist eigentlich eine Reihe von LEDs in verschiedenen Mustern, also mehrere hundert Zeilen Code. Diese Funktion macht alles in einer Endlosschleife. Ursprünglich habe ich die Funktion in einem Thread aufgerufen, weil ich einen anderen Code habe, der ebenfalls kontinuierlich läuft.Alternativen zu Threading in Python (und abschließenden Threads)

Jetzt muss ich in der Lage sein, die Funktion zu beenden. Dies könnte nach 10 Sekunden oder 100 Sekunden erforderlich sein. Jedes Mal wird es abhängen. Wenn man sich die Seite anschaut und das Threading untersucht, ist es nicht sinnvoll, den Thread einfach zu beenden, und ich kann ein Flag nicht wirklich verwenden, weil es so viele Codezeilen in der Funktion gibt.

Gibt es eine Alternative zur Verwendung von Threads?

Antwort

2

Wenn Sie nicht viel explizite gemeinsame Nutzung von Daten zwischen Threads benötigen, können Sie multiprocessing verwenden, das dem Modul threading sehr ähnlich ist, aber Prozesse verwendet (die sicher beendet werden können).

+0

Danke, scheint zu arbeiten. Durch sicher zu beenden, meinen Sie nur unter Verwendung von ".terminate()" in etwa so: p = multiprocessing.Process (target = Test) p.start() p.terminate() p.join() – user1624184

+0

@ user1624184: Ja. – ShadowRanger