PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Frage bzgl. Python Threading



Kampi
04.03.2013, 14:48
Heyho,

ich habe den gestrigen Abend genutzt um in meinem Python Buch ein bisschen weiter zu lesen.
Im Moment bin ich beim Thema Klassen und als Beispiel habe ich mir dafür mal das PizyPWM Servo Programm zur Hand genommen:

https://github.com/aboudou/pizypwm

Dort ist mir eine Zeile aufgefallen, die ich nicht so recht verstehe:

class PiZyPwm(threading.Thread):

Anschließend habe ich mir mal eine Info über das Modul "threading" geholt:

http://openbook.galileocomputing.de/python/python_kapitel_18_004.htm#mj6a088c87255d78ab32cc05 3633b5d48b

Ich weiß, dass mit "class PiZyPwm" ein Objekt mit dem Namen "PiZyPwm" geschaffen wird.
Aber den Teil mit dem "threading.Thread" verstehe ich noch nicht so ganz.
Laut Galileo Computing besitzt diese Klasse eine Methode (Funktion) mit dem namen "start", welche den Thread startet.
Was genau der Thread anschließend ausführt, wird mit der run-Methode festgelegt.
Aber was macht dann die Zeile

threading.Thread

Kann mir das jemand erklären?
Danke schon mal.

ichbinsisyphos
04.03.2013, 17:30
Es gibt da keine "Zeile" "threading.Thread".
threading.Thread bezeichnet die Klasse "Thread" im Modul "threading". Damit kannst du ein Thread-Objekt erzeugen, beziehungsweise in der Definition der abgeleiteten eigenen Klasse kommt der Ausdruck auch als Basisklasse vor.

"threading.Thread.__init__(self)" ist der Konstruktor der Basisklasse, der im Konstruktor der abgeleiteten Klasse (.__int__()) immer auch aufgerufen werden muss.

Das hat also mit threading gar nicht so viel zu tun, erstmal mit Klassenvererbung in Python.

Ein thread wird immer von diesem threading.Thread abgeleitet. Als Minimum musst du dann __init__() und run() überladen.

Die Methode run() enthält das Zeug, dass der thread abarbeiten soll, nachdem er indirekt über <thread-Objekt>.start() gestartet wurde.

Kampi
06.03.2013, 18:53
Hey,

danke für die Antwort. Jetzt hat es klick gemacht :)