threading, verwerten der ergebnisse aus einzelnen threads...

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
ichbinsisyphos
User
Beiträge: 120
Registriert: Montag 4. Juni 2007, 19:19

Donnerstag 10. Juli 2008, 16:04

ich hab grad erst angefangen mich mit threads auseinander zu setzen.

das ist quasi die vervielfachung und parallele ausführung von funktionen in einem skript, wenn ich das richtig sehe. möglich dass da noch mehr dahinter steckt.

aber wie bekomm ich die errechneten resultate aus den einzelnen threads möglichst elegant wieder ins hauptprogramm?

die einzige möglichkeit die ich bisher sehe und die auch funktioniert ist das erstellen von temp files in den threads und auslesen und zusammenführen im hauptprogramm.

besteht zum beispiel auch die möglichkeit einen thread einen wert oder eine liste zurückgeben zu lassen, die man dann an eine gemeinsame große im hauptprogramm anhängen kann?
BlackJack

Donnerstag 10. Juli 2008, 17:13

Am sichersten und wohl auch am einfachsten kann man Threads über `Queue`-Objekte aus dem gleichnamigen Modul kommunizieren lassen.
ichbinsisyphos
User
Beiträge: 120
Registriert: Montag 4. Juni 2007, 19:19

Donnerstag 10. Juli 2008, 21:53

gibts eine möglichkeit, threads und queue zusammen zu nutzen ohne die verwendung von klassen? das würd mich im moment etwas überfordern.
DasIch
User
Beiträge: 2452
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Donnerstag 10. Juli 2008, 22:11

Wie willst du mit Threads ohne Klassen arbeiten o_0

[wiki=Threading_Beispiel1]Hier[/wiki] ist ein sehr gutes Beispiel von Gerold, soweit ich weiß, bei dem es um threading und queues geht.
Das solltest du dir mal genauer angucken evtl. mal ein paar Sachen an dem Beispiel verändern und testen etc.
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Freitag 11. Juli 2008, 00:00

Hallo,

schau mal im Buch "Python in a Nutshell" unter "Threaded Program Architecture" nach oder recherchiere im Internet. Das ist genau das, was Du suchst.

Du brauchst einen Serialisierer (in der Regel auf Basis einer Queue), der neue Arbeitsaufträge einsortiert und geordnet an Threads ausgibt, bzw. die Threads speisen den Ergebnis-Serialisierer und das Hauptprogramm kann die Resultate auslesen.

Hauptprogramm -> Serialisierer -> Arbeitsthread -> Serialisierer -> Hauptp.
...................................................\_ Arbeitsthread _/.................................

Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Antworten