Threads: Übergabe von Argumenten

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.
Antworten
Steffo
User
Beiträge: 45
Registriert: Sonntag 24. Mai 2009, 19:38

Hallo,
ich habe gerade ein ziemlich banales Problem: Ich möchte einem Thread mehrere Argumente übergeben, allerdings beschwert sich Python, dass ich zu wenige übergebe:
thread.start_new_thread(self.controller.resetPorts(), (portButtonList, portNumber))
TypeError: resetPorts() takes exactly 3 arguments (1 given)

Code: Alles auswählen

# Der Auruf:
thread.start_new_thread(self.controller.resetPorts(), (portButtonList, portNumber))

Code: Alles auswählen

def resetPorts(self, portButtonList, portNumber):
    #....
Hat jemand eine Ahnung, was ich falsch gemacht habe? Ich dachte, man muss eine Tupel übergeben und das habe ich doch gemacht, oder?

Danke im Voraus!

L. G.
Steffo
BlackJack

@Steffo: Der erste Fehler ist das `thread`-Modul zu verwenden. Das sollte man nicht mehr tun. Die Dokumentation verweist auf das `threading`-Modul.

Und dann suchst Du an der falschen Stelle. Du rufst `self.controller.resetPorts()` auf. Da wird dann nur das implizite `self` übergeben, aber es werden offensichtlich noch zwei weitere Argumente erwartet. Du möchtest die Methode sehr wahrscheinlich aber an der Stelle überhaupt nicht aufrufen und deren Rückgabewert als Argument übergeben sondern die Methode selbst.
Steffo
User
Beiträge: 45
Registriert: Sonntag 24. Mai 2009, 19:38

BlackJack hat geschrieben:Und dann suchst Du an der falschen Stelle. Du rufst `self.controller.resetPorts()` auf. Da wird dann nur das implizite `self` übergeben, aber es werden offensichtlich noch zwei weitere Argumente erwartet. Du möchtest die Methode sehr wahrscheinlich aber an der Stelle überhaupt nicht aufrufen und deren Rückgabewert als Argument übergeben sondern die Methode selbst.
Kooorekt! :)

Danke! :)

L. G.
Steffo
Antworten