Thread Programm beschleunigen (21 answers)
Opened by steve123 at 2012-05-21 21:01

Lebewesen
 2012-05-23 17:19
#158522 #158522
User since
2011-09-09
62 Artikel
BenutzerIn

user image
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)

View full thread Programm beschleunigen