Montag, 14. Oktober 2013

Thread abbrechen

Wie kann ich in Python einen Thread vorzeitig abbrechen?

Ich benötige in einem Programm die Möglichkeit einen Thread abzubrechen. Soweit ich mich eingelesen habe gibt es diese Funktion im "threading" Modul von Python nicht.

Meine Lösung

import time
import threading
from tinkerforge.ip_connection import IPConnection
from tinkerforge.bricklet_io16 import IO16

threadBreak = False #Variable zum abbruch

def schalten():
while not threadBreak: #solange die Variable nicht auf True steht wird läuft die Schleife
                #Die Ports des TinkerForge Moduls werden ein und ausgeschaltet.
io.set_port_configuration('a', 1, 'o', True)
time.sleep(2)
io.set_port_configuration('a', 1, 'o', False)
time.sleep(2)


#Connect zu den TinkerForge Modulen
#Kommt so aus den Beispielen der Webseite
ipcon = IPConnection() # Create IP connection
io = IO16(UID, ipcon) # Create device object

ipcon.connect(HOST, PORT) # Connect to brickd
# Don't use device before ipcon is connected

print('start')

threading.Thread(target = schalten).start() #starte den Thread

time.sleep(20) #Warte
print('Habe mal geschlafen')
threadBreak = True #Ändere Variable
print('Fertig!')