Thread Programm beschleunigen
(21 answers)
Opened by steve123 at 2012-05-21 21:01
Wie kann ich eigentlich paralellisieren, wenn ich Unterprogramme aufrufen?
Meine Aufrufstruktur sieht so aus (Die Dateien liegen auf einem Netzlaufwerk): Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 my @datenArray=(); my $anzahl=@Dateien; $anzahl = $anzahl-1; for (my $i = 0; $i <= $anzahl; $i++) { my $DateiName = $Dateien[$i]; my ($daten, @Daten); #Wenn die Datei nicht geöffnet werden konnte mit der nächsten fortsetzen. die $! unless open DATEI, $DateiName; { local $/ = undef; $daten = <DATEI>; } close DATEI; #60 Dateien in den Arbeitsspeicher einlesen und dann verarbeiten if (($i%60==0&&$i>0)||$i==$anzahl){ #Daten aus Array holen und Eintrag löschen say "Modulo 60 oder alle Dateien" if $Debug; while (my $Aktuelle_daten = shift(@datenArray)){ say "Datei: $$Aktuelle_daten[1]" if $Debug; my $R = &Umwandeln($$Aktuelle_daten[0],$DatAnz,$$Aktuelle_daten[1]); InDateiSchreiben($R); } #Array sicherheitsalber löschen - sollte aber leer sein! @datenArray=(); }else{ push (@datenArray, [$daten,$DateiName]); #Daten in Array schieben } } modedit Editiert von pq: teilbaum Last edited: 2012-05-24 11:06:53 +0200 (CEST) |