NAME

Proc::Forkmap - map with forking

SYNOPSIS

EXAMPLE:

use Proc::Forkmap;

sub foo {
  my $x = shift;
  my $t = sprintf("%1.0f", $x + 1);
  sleep $t;
  print "slept $t seconds\n";
}

my @x = (rand(), rand(), rand());
my $p = Proc::Forkmap->new;
$p->fmap(\&foo, @x);

DESCRIPTION

This module supplies an easy to use map method that provides built-in forking.

METHODS

new

my $p = Proc::Forkmap->new(max_kids => 4)
max_kids

Maximum number of kids allowed in the pool. The default is 4.

ipc

Set IPC on/off state. IPC is off by default.

non_blocking

Defaults to 1, and falsy to block.

max_kids

$p->max_kids(4);

max_kids setter/getter.

fmap

$p->fmap(\&foo, @x);

This method takes a coderef and an array. If IPC is blocking, then it will return a result set. Otherwise, it will continue, waiting for child processes to complete their tasks.

ipc

$p->ipc(1)

Turn on/off inter-process communication.

non_blocking

$p->non_blocking(1)

If IPC is on, then set IO::Handle blocking state. This might be useful for conditional parallelism.

TODO

1. Timeouts

SEE ALSO

Proc::Fork, IO::Pipe

AUTHOR

Andrew Shapiro, <trski@cpan.org>

BUGS

Please report any bugs or feature requests to bug-proc-forkmap at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Proc-Forkmap. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

LICENSE AND COPYRIGHT

Copyright 2019 Andrew Shapiro.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License. See http://dev.perl.org/licenses/ for more information.