http://www.perlmonks.org?node_id=443185


in reply to Re: Parallel::ForkManager using up Resources?
in thread Parallel::ForkManager eating up Resources?

All using ForkManager. Children die and close their DB handles in order. Quickly post:
foreach my $ln (@lines) { $pm->start && next; ** child starts my $dbh = $this->_child_db(); ... code here ** child finishes with _close_child(); $this->_close_child(); $pm->finish } $pm->wait_all_children() _child_db() { if (!$this->{'_dbh-child')) { print $$ . ": Creating Child DB Handle"; $this->{'_dbh-child'} = new DBI::Connect ......; } return $this->{'_dbh-child'}; } _close_child() { print $$ . ": Closing child DB Handle"; $this->{'_dbh-child'}->disconnect(); delete($this->{'_dbh-child'}); }

Very rough, please don't try to compile it. All my code is on an internal system not connected to the internet.

My code is all very verbose. Everything is working correctly and in order. All children to finish, total 6 processes max ever within top. Finish is always seen before a Start.

-- philip
We put the 'K' in kwality!

Replies are listed 'Best First'.
Re^3: Parallel::ForkManager using up Resources?
by guice (Scribe) on Mar 29, 2005 at 17:09 UTC
    Also -- I've added close and finish methods for each child process through ForkManager, too:
    $pm->run_on_start(\&_child_start); $pm->run_on_finish(\&_child_finish); sub _child_start() { my ($pid, $ident) = @_; print "**** STARTED: child with PID $pid"; } sub _child_finish(){ my ($pid, $exit, $ident) = @_; print "**** FINISHED: child with PID $pid exit cide $exit"; }

    -- philip
    We put the 'K' in kwality!