in reply to Re: running a function for different list parallely using fork
in thread running a function for different list parallely using fork
Exactly this.
use Parallel::ForkManager qw( ); my @testLists = ...; my $pm = Parallel::ForkManager->new( 2 ); for my $list ( @testLists ) { $pm->start and next; $status += regressions( $opts, $list ); $pm->finish; } $pm->wait_all_children();
That said, you are changing $status in the child to no effect. Did you mean to exit with that code?
use Parallel::ForkManager qw( ); my @testLists = ...; my $status = 0; my $pm = Parallel::ForkManager->new( 2 ); $pm->run_on_finish(sub { my ( $pid, $exit_code, $ident ) = @_; $status += $exit_code; }); for my $list ( @testLists ) { $pm->start and next; my $status = regressions( $opts, $list ); $status = 255 if $status > 255; $pm->finish( $status ); } $pm->wait_all_children();
P::FM also facilitates passing more complex values back to the parent.
use Parallel::ForkManager qw( ); my @testLists = ...; my $status = 0; my $pm = Parallel::ForkManager->new( 2 ); $pm->run_on_finish(sub { my ( $pid, $exit_code, $ident, $exit_signal, $core_dump, $data ) = +@_; if ( $exit_code || $exit_signal || $core_dump ) { # Handle error. } $status += $data->{ status }; }); for my $list ( @testLists ) { $pm->start and next; my $status = regressions( $opts, $list ); $pm->finish( 0, { status => $status } ); } $pm->wait_all_children();
Update: Applied marioroy's fix.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: running a function for different list parallely using fork - MCE::Child, MCE
by marioroy (Prior) on Mar 16, 2023 at 03:04 UTC | |
by ikegami (Patriarch) on Mar 17, 2023 at 05:36 UTC | |
|
Re^3: running a function for different list parallely using fork - Parallel::ForkManager
by marioroy (Prior) on Mar 16, 2023 at 02:32 UTC | |
by ikegami (Patriarch) on Mar 17, 2023 at 05:35 UTC | |
|
Re^3: running a function for different list parallely using fork
by noviceuser (Acolyte) on Mar 22, 2023 at 06:57 UTC | |
by ikegami (Patriarch) on Mar 22, 2023 at 19:50 UTC | |
|
Re^3: running a function for different list parallely using fork
by noviceuser (Acolyte) on Mar 22, 2023 at 06:41 UTC |