User since
2006-11-26
384
Artikel
BenutzerIn
Hallo ihr profis,
ich moechte eine bestimmte Aufgabe mehrmals gleichzeitig ausfuehren, um einen Vorgang zu beschleunigen.
Dafuer gibt es ja, soweit ich weiß, ein Modul namens threads.
Dann hab ich mal bei cpan geguckt nach Beispielen. Aber da blicke ich nicht durch. Deswegen waer's nett wenn mir mal jemand ein, fuer normale Menschen lesbares, Beispiel zeigen kann.
Infos zum Script, welches ich mit threads erweitern moechte:
Das Script ruft eine URL x Mal auf, mit verschiedenen Werten die uebergeben werden. Und das ist immer 1 request, dann der naechste ...
Nun moechte ich das beschleuningen. Das ich z.B. das ganze 5 mal habe. (gleichzeitig)
Thread 1: Ruft URL auf, checkt ob neue Infos
Thread 2: Ruft URL auf, checkt ob neue Infos
[...]
Das Script ansich ist schon fertig, fehlen nur noch die Thread Kompatibilitaet
Ich hoffe es ist halbwegs verstaendlich erklaert.
Vielen Dank & ein schoenes Wochenende
[R]\n\n
<!--EDIT|RPerl|1169395761-->
User since
2003-08-07
2921
Artikel
BenutzerIn
Schau die mal POE an, die haben auf poe.perl.org auch viele schöne Beispiele stehen.
User since
2006-11-26
384
Artikel
BenutzerIn
Mir ist gerade noch ein logisches Problem eingefallen. Das werde ICH leider 100% nicht so schnell erledigen.
Das Script oeffnet eine Datei mit Werten, die an eine URL uebergeben werden. Und die threads muessten sich die Arbeit aufteilen.
z.B. Thread1 10 Zeilen der Datei
Thread2 die naechsten 10 Zeilen
usw.
Ui, ich glaube das ist heftig...
User since
2003-08-07
2921
Artikel
BenutzerIn
Na dann startest du halt einen Thread, der dir die Datei öffnet undjeweils 10 Zeilen ausliest und diese als Argument an einen neuen Thread abgibt.
User since
2006-11-26
384
Artikel
BenutzerIn
QuoteNa dann startest du halt einen Thread, der dir die Datei öffnet undjeweils 10 Zeilen ausliest und diese als Argument an einen neuen Thread abgibt.
Hm.. Und wie sieht das in etwa aus?
my $thr = new Thread \&abfrage, $nick, $liste, $proxy;
my $thr = new Thread \&abfrage, $nick, $liste, $proxy;
Hab das mal an den "Anfang" des Scriptes gesetzt.
Aber das sind nicht jetzt schon 2 threads? Weil das waer ja viel zu einfach gewesen...^^
Danke!
Rperl
User since
2003-08-07
2921
Artikel
BenutzerIn
Tut mir leid, aber ich kenne mich nur mit POE aus. Und wie das da aussieht steht auf deren Webseite im Kochbuch.
Grüße, pktm
User since
2006-11-26
384
Artikel
BenutzerIn
Macht nichts, hier gibt es ja noch viele andere Profis.
Hab mir halt
http://www.xav.com/perl/lib/Pod/perlthrtut.html angeguckt.
Das sah relativ einfach aus.
[2]Die Frage ist nur, die ich es schaffe die Liste zwischen den threads aufzuteilen :/
Waer super wenn hier jemand ein paar Beispiele im Zusammenhang mit dem Link oben posten koennte. Weiß naemlich nicht wie ich das[2] anstellen kann :(
Danke!
Rperl\n\n
<!--EDIT|RPerl|1169398738-->
User since
2006-11-26
384
Artikel
BenutzerIn
ok .. aber wie loese ich das dann mit threads?
//e: ich hab dein Bsp leider nicht verstanden topeq.
Weil dann braeuchte ich doch 2 mal fast den selben code?!
Macht doch ueberhaupt keinen Sinn!
Zeile 11:
&verarbeite_10_zeilen_in_thread([@ten_lines]);
Zeile 16:
&verarbeite_10_zeilen_thread([@ten_lines])
hä?!
Wieso denn zwei verschiedene Subfunktionsnamen?!
Und wie soll ich das mit threads verbinden???
http://www.gifart.de/gif234/fragezeichen/00003496....\n\n
<!--EDIT|RPerl|1169488017-->
User since
2003-08-04
14371
Artikel
ModeratorIn
Die Threads, die in dem von Dir verlinkten perldoc gezeigt werden sind veraltet. Es gibt
threads und im aktuellen
perlthrtut ist auch nur noch von
threads die Rede.
Deine Aufgabe könnte man gut mit
fork lösen. Dazu gibt's auch einen
Artikel.