Provides a simple, no frills fork manager.


Given an object that provides a run() method, you can create a Parallel::Tiny fork manager object that will execute that method several times.

my $obj = My::Handler->new();
my $forker = Parallel::Tiny->new(
    handler      => $obj,
    workers      => 4,
    worker_total => 32,

In the above example we will execute the run() method for a My::Handler object 4 workers at a time, until 32 total workers have completed/died.


  • new()

    Returns a new Parallel::Tiny fork manager.

    Takes the following arguments as a hash or hashref:

        handler      => $handler,      # provide an object with a run() method, this will be your worker (required)
        reap_timeout => $reap_timeout, # how long to wait in between reaping children                    (default ".1")
        subname      => $subname,      # a method name to execute for the $handler                       (default "run")
        workers      => $workers,      # the number of workers that can run simultaneously               (default 1)
        worker_total => $worker_total, # the total number of times to run before stopping                (default 1)

    For instance, you could run 100 workers, 4 workers at a time:

    my $forker = Parallel::Tiny->new(
        handler      => $obj,
        workers      => 4,
        worker_total => 100,

    infinite can be provided for the $worker_total but you will need to manage stopping the fork manager elsewhere.

    If the parent is sent SIGTERM it will wait to reap all currently executing children before finishing.

    If the parent is killed, children will receive SIGHUP, which you will need to deal with in your $handler.

  • run()

    Start running a number of parallel workers equal to $workers, until a number of workers equal to $worker_total have been completed.