Wie zwei Funktionen Gleichzeitig laufen lassen?

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
Teabag
User
Beiträge: 81
Registriert: Sonntag 13. Mai 2007, 20:44

Hallo
Ich wüsste gerne wie ich diese zwei funktionen gleichzeitig laufen lassen kann?

Code: Alles auswählen

from os import system
system ("color 1F")

print "Willkommen im Chat!"  ### Frägt nach dem Namen, und nach den IP adressen. ###
name = raw_input("Dein Name:")
eigeneIP = raw_input("Geb hier deine eigen IP an:")
print "Mit welchem pc wollen sie chatten?"
ip = raw_input("Bite geben sie hier die IP adresse an:")
print "Connecting..."
name = name + ":"
    
def printmessage(): 
    while True:
        global name
        global ip
        inp = open(ip + "\\daten\\chat2.txt","a") # öffnet die datei chat2.txt
        eingabe = raw_input(name)
        if eingabe == ("help"):
            print "exit = chat schliessen"
            print "changename = Name aendern"
            print "loeschen = Verlauf loeschen"
            print "options = Farben aendern"
            print "ipchange = IP des anderen Pc's ändern"
        if eingabe == ("exit"):
          system ("exit")  
        
        if eingabe == ("ipchange"):
            ip = raw_input("Bite geben sie hier die IP adresse an:")
            
        if eingabe == ("options"):
            print "Hier kannst du die Farben aendern, als erstes musst du color schreiben und "
            print "hinten dran die jeweilige Kombination fuer die Farbe (immer links fuer den "
            print "hintergrund und rechts fuer die schrift (z.B. color 30):"
            print "1 = Dunkelblau"
            print "0 = Schwarz"
            print "2 = Dunkelgruen"
            print "4 = Dunkelrot"
            print "5 = Lila"
            print "7 = Hellgrau"
            print "8 = Dunkelgrau"
            print "9 = Blau"
            print "C = Rot"
            print "E = Gelb"
            print "F = Weiss"
            color = raw_input()
            system (color)
               
        if eingabe == ("loeschen"):
            print "Willst du wirklich den ganzen Verlauf löschen?"
            leeren = raw_input("JA?")
            if leeren == ("JA"):
                system ("cls")
            elif leeren == ("ja"):
                system("cls")
            
        if eingabe == ("changename"):
            name = raw_input("Dein Name:")
            name = name + ":"
                
        inp.write (name)    ### Schreibt den Namen und den Eingabetext ###
        inp.write (eingabe)
        inp.write ("\n")
        inp.close()       


   
def findusermessage():
    global eigeneIP
    anzahlzeilen = 0
    while True:
        usermessage = open(eigeneIP + "\\daten\\chat2.txt","r") ### öffnet die datei chat2.txt ###
        text = usermessage.readlines()
        if len(text) > anzahlzeilen:   ### Schaut ob ein der andere User eine neue Message hinterlassen hat. ###
            print text[-1]             ### Schreibt die Message des anderen Users                            ###
            anzahlzeilen = len(text)
        else:
            anzahlzeilen = len(text)
        usermessage.close()
        
Schon mal danke

Euer Teabag
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dazu benutzt man meist Threads. Wie das geht, werde ich aber hier nicht nochmal detailiert ausführen, es gibt das Modul ``threading`` und es gibt die Forensuche.

Aber in deinem Programm könnte man auch einiges vorher verbessern, bevor du dich an die Arbeit mit mehreren Threads machst. Mir würde das loswerden der ``global``-Statements einfallen, auch dass Python Multiline-Strings hat, ebenso dass es den Style-Guide gibt, der einige gute Vorschläge hat, wie man am besten Code schreibt, dass andere ihn nicht sofort umschreiben würden, etc.

Davon mal abgesehen fände ich sowas wie ``system(color)`` vergleichsweise unsicher - was wenn der User dort etwas ganz ganz blödes eintippt wie ``del *.*``?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Teabag
User
Beiträge: 81
Registriert: Sonntag 13. Mai 2007, 20:44

Hallo Wie macht man dass denn mit Threads?
Ich hab damit keine erfahrung.
Könnte mir jemand mehr info darüber geben?

Vielen Dank

Euer Teabag
Grossmeister_C
User
Beiträge: 36
Registriert: Montag 26. Februar 2007, 15:53

Teabag hat geschrieben:Hallo Wie macht man dass denn mit Threads?
Ich hab damit keine erfahrung.
Könnte mir jemand mehr info darüber geben?

Vielen Dank

Euer Teabag
Schau Dir mal dieses Modul an:

http://docs.python.org/lib/module-threading.html

Wenn Du im Forum unter "threading" suchst wirst Du auch eine Menge finden.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Teabag hat geschrieben:Hallo Wie macht man dass denn mit Threads?
Ich hab damit keine erfahrung. Könnte mir jemand mehr info darüber geben?
Hallo Teabag!

Die Antwort darauf wurde schon gegeben:
Leonidas hat geschrieben:Wie das geht, werde ich aber hier nicht nochmal detailiert ausführen, es gibt das Modul ``threading`` und es gibt die Forensuche.
Hier noch ein direkter Link: http://www.python-forum.de/topic-3869.html

mfg
Gerold
:-)

Edit (Leonidas): Diskussion zum Wesen der Threads in den Thread "Thread-Interna" abgetrennt.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten