Thread Logikaufbau bei Parallel::ForkManager
(36 answers)
Opened by bianca at 2013-09-27 10:20 2013-09-27T15:02:25 bianca 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; QuoteEs 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 |