Seite 1 von 1

Warten auf Threads

Verfasst: Donnerstag 18. November 2010, 21:56
von Tom_at
Hallo!

Bin neu bei der (Python-)Programmierung und arbeite gerade das Buch "Einstieg in Python3" durch.
Aktuell ist das Kapitel Threads dran.
Im Buch wird leider nicht beschrieben wie man auf Threads wartet.
Bsp: Ich habe ein Hauptprogramm und einen Thread. Das Hauptprogramm beginnt => der Thread wird gestartet => das Hauptprogramm läuft weiter => jetzt soll das Hauptprogramm auf das Ende des Threads warten und dann erst weitermachen.

Das funktioniert, aber ich will nicht immer "warte" stehen haben.
Wenn ich "print("warte")" entferne hängt das Programm.
Wie kann ich das eleganter lösen?

Code: Alles auswählen

import _thread, time

def ausgabe(tn):
  global weiter
  for i in range(5):
    id = _thread.get_ident()
    print(i,"Thread:",tn,"ID:",id)
    time.sleep(1)
  weiter = 1
  return

weiter = 0

#Hauptprogramm
id = _thread.get_ident()
print("Hauptprogramm:",id,"Start")

_thread.start_new_thread(ausgabe,(1,))

while weiter == 0:
  print("warte")


print("Hauptprogramm:",id,"Ende")

Danke!

Gruß
Tom

Re: Warten auf Threads

Verfasst: Donnerstag 18. November 2010, 22:21
von EyDu
Hallo und willkommen im Forum!

Wirf mal auf die join-Methode von Threads einen Blick, damit kannst du dein Vorhaben umsetzen. Bei einem einzigen Thread kannst du dir das ganze aber eigentlich auch sparen und einfach als Funktion ausführen ;-)

Die Existenz von global möchtest du übrigens gleich wieder vergessen. Diese solltest du durch Parameter und Rückgabewerte ersetzen. Für die könnte auch noch das queue-Modul interessant sein.

Ach ja: [quote=http://docs.python.org/library/thread.html]The thread module has been renamed to _thread in Python 3.0. The 2to3 tool will automatically adapt imports when converting your sources to 3.0; however, you should consider using the high-level threading module instead.
[/code]

Sebastian