in reply to Struggling with fork, waitpid, wait

As for the subtask of running 8 parallel processes per machine, Parallel::ForkManager might be easier to get started with, as it would largely hide the lower-level fork/exec/wait details from you.

(And in case you want to learn how things work under the hood, take a look at the the module's source — it's just ~150 lines of code, and not all that difficult to understand.)

  • Comment on Re: Struggling with fork, waitpid, wait

Replies are listed 'Best First'.
Re^2: Struggling with fork, waitpid, wait
by sierpinski (Chaplain) on May 28, 2010 at 14:10 UTC
    I definitely agree...
    For it's complexity (or so it might seem), Parallel::ForkManager was, I thought, surprisingly easy to get get working. The example code on the module's page was helpful, and the explanation of the methods was more than sufficient. I'd recommend that module as well.

    The number of forked processes to run at one time is easily set... maxprocs is a parameter to the object. Just calculate that ahead of time and drop it in. Much faster than doing it manually from the parent process.
    my $max_procs = 8; my $pm = new Parallel::ForkManager($max_procs);
    You can also add in run_on_finish for post_process code, and wait_all_children forces the parent to wait for all processes to complete before continuing.

    HTH.