in reply to Re^2: Prima + MCE::Hobo demonstration
in thread Prima + MCE::Hobo demonstration
For completeness, here's the code using Parallel::ForkManager. Calling MCE::Shared->init() is important to spread out IPC across 12 data channels. Not doing so, means all 200 workers share a single data channel and take much longer to run. Init is called automatically for MCE, MCE::Hobo and threads.
Parallel::ForkManager
use strict; use warnings; use Parallel::ForkManager; use MCE::Shared; use Time::HiRes 'time'; my $n = MCE::Shared->scalar(0); my $s = time; my $fork_manager = new Parallel::ForkManager(200); $fork_manager->set_waitpid_blocking_sleep(0); foreach my $child ( 1 .. 200 ) { my $pid = $fork_manager->start($child) and next; # init optionally takes an integer value MCE::Shared->init($child); my $v; $v = $n->incr() for 1 .. 933; $fork_manager->finish($child); } $fork_manager->wait_all_children; printf "duration: %0.3f\n", time - $s; print $n->get(), "\n"; __END__ main process, shared-manager process, and 200 workers Parallel::ForkManager: ~ 1200K per worker
It's great knowing that MCE::Hobo isn't far behind regarding memory consumption. What I've learn is that simply loading modules doesn't tell the whole story. One must capture memory consumption while running for a better picture. :)
Regards, Mario
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^4: Prima + MCE::Hobo demonstration
by zentara (Cardinal) on May 02, 2017 at 13:56 UTC | |
by marioroy (Prior) on May 02, 2017 at 15:48 UTC |