Magnum
03.08.2005, 13:00
Hallo,
in einem Python Programm würde ich gerne Threads benutzen, weil ich mehrmal dieselbe Aufgabe erledigen lassen möchte, wobei es bei jeder Ausführung zu Wartezeiten kommt. Meine Idee ist nun, wenn das mit Threads läuft warten die Threads gleichzeitig, sodass das Programm viel schneller fertig ist.
Das Problem ist nun: Wie speichert man die Ergebnisse der einzelnen Threads zentral ab um sie dann weiterverarbeiten zu können?
import thread
def print_time(start, erg):
# was machen, was lange dauert....
# Ergenis speichern
erg[start] = start + 1
global erg
erg = {}
# Starte die neuen Threads
thread.start_new_thread( print_time, (1, erg) )
print 'erster'
thread.start_new_thread( print_time, (2, erg) )
print 'zweiter'
thread.start_new_thread( print_time, (3, erg) )
print 'dritter'
# zentralen AUsgabe aller Ergebnisse
print erg
Folgende AUsgabe erscheint:
D:\>python test.py
erster
zweiter
dritter
{}
Also schreiben die Threads nicht das Ergebnis in erg.
Es sollte so aussehen, dass im erg-Dictionary folgendes steht
erg[1] == 2
erg[2] == 3
erg[3] == 4
Hat jemand eine Idee wie man sowas realisieren kann?
Grüße
Magnum
in einem Python Programm würde ich gerne Threads benutzen, weil ich mehrmal dieselbe Aufgabe erledigen lassen möchte, wobei es bei jeder Ausführung zu Wartezeiten kommt. Meine Idee ist nun, wenn das mit Threads läuft warten die Threads gleichzeitig, sodass das Programm viel schneller fertig ist.
Das Problem ist nun: Wie speichert man die Ergebnisse der einzelnen Threads zentral ab um sie dann weiterverarbeiten zu können?
import thread
def print_time(start, erg):
# was machen, was lange dauert....
# Ergenis speichern
erg[start] = start + 1
global erg
erg = {}
# Starte die neuen Threads
thread.start_new_thread( print_time, (1, erg) )
print 'erster'
thread.start_new_thread( print_time, (2, erg) )
print 'zweiter'
thread.start_new_thread( print_time, (3, erg) )
print 'dritter'
# zentralen AUsgabe aller Ergebnisse
print erg
Folgende AUsgabe erscheint:
D:\>python test.py
erster
zweiter
dritter
{}
Also schreiben die Threads nicht das Ergebnis in erg.
Es sollte so aussehen, dass im erg-Dictionary folgendes steht
erg[1] == 2
erg[2] == 3
erg[3] == 4
Hat jemand eine Idee wie man sowas realisieren kann?
Grüße
Magnum