Seite 1 von 1

Threads: Übergabe von Argumenten

Verfasst: Mittwoch 17. Oktober 2012, 14:12
von Steffo
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

Re: Threads: Übergabe von Argumente

Verfasst: Mittwoch 17. Oktober 2012, 14:19
von 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.

Re: Threads: Übergabe von Argumente

Verfasst: Mittwoch 17. Oktober 2012, 14:31
von Steffo
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