NAME
Proc::Forkmap - map with forking
SYNOPSIS
EXAMPLE:
use Proc::Forkmap qw(forkmap);
$Proc::Forkmap::MAX_PROC = 4;
sub foo {
my $n = shift;
sleep($n);
print "slept for $n seconds\n";
}
my @x = (1, 2, 3);
forkmap { foo($_) } @x;
# Or OO interface, if you like that sort of thing
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 provides mapping with built-in forking.
FUNCTIONS
forkmap
forkmap { foo($_) } @x;
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
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.