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
14542 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)
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

View full thread Logikaufbau bei Parallel::ForkManager