Schrift
[thread]8666[/thread]

threads => Grundwissen

Leser: 4


<< |< 1 2 3 4 ... 6 >| >> 51 Einträge, 6 Seiten
RPerl
 2007-01-21 18:07
#73432 #73432
User since
2006-11-26
384 Artikel
BenutzerIn

user image
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-->
pktm
 2007-01-21 18:21
#73433 #73433
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Schau die mal POE an, die haben auf poe.perl.org auch viele schöne Beispiele stehen.
http://www.intergastro-service.de (mein erstes CMS :) )
RPerl
 2007-01-21 18:23
#73434 #73434
User since
2006-11-26
384 Artikel
BenutzerIn

user image
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...
pktm
 2007-01-21 18:27
#73435 #73435
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
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.
http://www.intergastro-service.de (mein erstes CMS :) )
RPerl
 2007-01-21 18:37
#73436 #73436
User since
2006-11-26
384 Artikel
BenutzerIn

user image
Quote
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.

Hm.. Und wie sieht das in etwa aus?


Code: (dl )
1
2
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
pktm
 2007-01-21 18:54
#73437 #73437
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
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
http://www.intergastro-service.de (mein erstes CMS :) )
RPerl
 2007-01-21 18:57
#73438 #73438
User since
2006-11-26
384 Artikel
BenutzerIn

user image
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-->
topeg
 2007-01-21 19:31
#73439 #73439
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
So?
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
open(DAT,'<',$datei) or die $!;
my @ten_lines;
my $cnt=0;
while(my $line=<DAT>)
{
  push(@ten_lines,$line);
  $cnt++;
  if($cnt>=10)
  {
   $cnt=0;
   &verarbeite_10_zeilen_in_thread([@ten_lines]);
   @ten_lines=();
  }
}
# übrig geblibenen Zeilen verarbeiten
&verarbeite_10_zeilen_thread([@ten_lines]) if(@ten_lines>0);
close(DAT);
RPerl
 2007-01-22 19:05
#73440 #73440
User since
2006-11-26
384 Artikel
BenutzerIn

user image
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-->
renee
 2007-01-22 19:42
#73441 #73441
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Die Threads, die in dem von Dir verlinkten perldoc gezeigt werden sind veraltet. Es gibt Perldoc:threads und im aktuellen Perldoc:perlthrtut ist auch nur noch von threads die Rede.

Deine Aufgabe könnte man gut mit fork lösen. Dazu gibt's auch einen Wiki:Artikel.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 3 4 ... 6 >| >> 51 Einträge, 6 Seiten



View all threads created 2007-01-21 18:07.