Thread Logikaufbau bei Parallel::ForkManager (36 answers)
Opened by bianca at 2013-09-27 10:20

GwenDragon
 2013-09-27 17:52
#170722 #170722
User since
2005-01-17
14848 Artikel
Admin1
[Homepage]
user image
2013-09-27T15:02:25 bianca
Hast du außer der Regex Erweiterung wirklich NICHTS geändert und es hat mit 1000 Unterprozessen geklappt??


So habe ich getestet:
10_000 Dateien erzeugt von 1-auftrag.dat .. 10000-auftrag.dat.
Dann das Programm laufen lassen.

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use Parallel::ForkManager;

my $config;
$config->{max_prozesse} = 1000;
$config->{poll_interval} = 1;

my $forkmanager = Parallel::ForkManager->new($config->{max_prozesse});
$forkmanager->run_on_start(
        sub {
                my ($pid,$file) = @_;
                print "Sohn '$pid' startet mit Datei '$file'\n";
        },
);
$forkmanager->run_on_finish(
        sub {
                my ($pid) = @_;
                print "Sohn '$pid' ist beendet\n";
        },
);
$forkmanager->run_on_wait(
        sub {
                print "Warte auf Aufträge\n"
        },
        $config->{poll_interval},
);
my $lauf = 1;
while ($lauf) {
        if (opendir my $vh,'.') {
                foreach my $file (
                        grep {
                                $_ =~ /^[a-z0-9]+\-auftrag.dat$/
                                        &&
                                !-z $_
                        }
                        readdir $vh
                ) {
                        print "Datei $file gefunden\n";
                        rename($file,"$file-erl");
                        my $pid = $forkmanager->start($file) and next;
                        # Sohn
                        print "Hier meldet sich Sohn '$pid' von der Front\n";
                        $forkmanager->finish();
                }
        }
}
$forkmanager->wait_all_children;


Quote
Würde ja heißen, dass das Script logisch in Ordnung ist?
Es benennt jedenfalls die Dateien um. Ob das so ist wie du meinst, kann ich nicht überprüfen. Teste es doch bitte mal selbst.
Last edited: 2013-09-27 17:57:51 +0200 (CEST)

View full thread Logikaufbau bei Parallel::ForkManager