threads in python benutzen

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
stugi82
User
Beiträge: 11
Registriert: Freitag 19. Oktober 2007, 14:16

Freitag 19. Oktober 2007, 14:36

Hallo,

ich habe folgende Frage: ich möchte eine Funktion eines Moduls aus einem Thread aufrufen und mache das etwas so:

Code: Alles auswählen

import threading
import modul

class thread(threading.Thread):
    
    def __init__(self):
        threading.Thread.__init__(self, name="FirstThread")

    def run(self):
        modul.methode(Parameter,...)

thread=thread()
thread.start()


tut aber nicht :(

als Fehler kommt:

NameError: global name 'Parameter' is not defined

und das obwohl ich das Modul importiert hab.

EDIT by Gerold: Code in Code-Tags gesetzt
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 19. Oktober 2007, 14:52

Hallo stugi82, willkommen im Forum,

Natürlich kommt da ein Fehler. Wo soll denn ``Parameter`` her kommen? Das ist genauso als würdest du ``print das_ist_ein_beliebiger_name`` ausgeben - es ist nicht definiert. Also musst du den Parameter erstmal definieren.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

Freitag 19. Oktober 2007, 15:27

stugi82 hat geschrieben:[...]und das obwohl ich das Modul importiert hab.
Das klingt für mich danach, dass du "Parameter" im modul definiert hast.

Wenn Parameter in modul definiert wurde (also in modul.py etwa

Code: Alles auswählen

Parameter = x
steht) musst du ihn entweder explizit importieren:

Code: Alles auswählen

from modul import Parameter
oder auf ihn übers modul zugreifen:

Code: Alles auswählen

modul.function(modul.Parameter)
Sollte er nicht im modul definiert sein, vergiss dieses Post :)

PS: das ganze ginge auch simpler so:

Code: Alles auswählen

from threading import Thread
import modul

t = Thread(name='FirstThread', target=modul.methode, args=(Parameter, ...))
t.start()
stugi82
User
Beiträge: 11
Registriert: Freitag 19. Oktober 2007, 14:16

Montag 22. Oktober 2007, 07:48

Danke für die Antworten, das Problem war aber ein anderes. Natürlich waren die Parameter definiert und auch importiert. Es lag viel mehr daran, dass die Parameter zur Laufzeit teilweise noch nicht initialisiert waren. Muss ein ziemlich unübersichtliches Prog. warten, da kann man das schon mal übersehen und die Compiler-Meldung war auch nicht gerade hilfreich...
Antworten