Seite 1 von 1

Wie zwei Funktionen Gleichzeitig laufen lassen?

Verfasst: Dienstag 22. Mai 2007, 17:58
von Teabag
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

Verfasst: Dienstag 22. Mai 2007, 18:07
von Leonidas
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 *.*``?

Wie macht man das mit Threads?

Verfasst: Dienstag 22. Mai 2007, 20:46
von Teabag
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

Re: Wie macht man das mit Threads?

Verfasst: Dienstag 22. Mai 2007, 20:57
von Grossmeister_C
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.

Re: Wie macht man das mit Threads?

Verfasst: Dienstag 22. Mai 2007, 20:57
von gerold
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.