-
-
21 Jun 2019 21:26:13 UTC
- Distribution: AnyEvent-ForkManager
- Module version: 0.07
- Source (raw)
- Browse (raw)
- Changes
- Homepage
- How to Contribute
- Repository
- Issues
- Testers (154 / 0 / 0)
- Kwalitee
Bus factor: 1- 83.03% Coverage
- License: perl_5
- Perl: v5.8.1
- Activity
24 month- Tools
- Download (14.97KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
and 2 contributors-
E. Choroba
-
karupanerura
NAME
AnyEvent::ForkManager - A simple parallel processing fork manager with AnyEvent
VERSION
This document describes AnyEvent::ForkManager version 0.07.
SYNOPSIS
use AnyEvent; use AnyEvent::ForkManager; use List::Util qw/shuffle/; my $MAX_WORKERS = 10; my $pm = AnyEvent::ForkManager->new(max_workers => $MAX_WORKERS); $pm->on_start(sub { my($pm, $pid, $sec) = @_; printf "start sleep %2d sec.\n", $sec; }); $pm->on_finish(sub { my($pm, $pid, $status, $sec) = @_; printf "end sleep %2d sec.\n", $sec; }); my @sleep_time = shuffle(1 .. 20); foreach my $sec (@sleep_time) { $pm->start( cb => sub { my($pm, $sec) = @_; sleep $sec; }, args => [$sec] ); } my $cv = AnyEvent->condvar; # wait with non-blocking $pm->wait_all_children( cb => sub { my($pm) = @_; print "end task!\n"; $cv->send; }, ); $cv->recv;
DESCRIPTION
AnyEvent::ForkManager
is much like Parallel::ForkManager, but supports non-blocking interface with AnyEvent.Parallel::ForkManager is useful but, it is difficult to use in conjunction with AnyEvent. Because Parallel::ForkManager's some methods are blocking the event loop of the AnyEvent.
You can accomplish the same goals without adversely affecting the Parallel::ForkManager to AnyEvent::ForkManager with AnyEvent. Because AnyEvent::ForkManager's methods are non-blocking the event loop of the AnyEvent.
INTERFACE
Methods
new
This is constructor.
- max_workers
-
max parallel forking count. (default: 10)
- on_start
-
started child process callback.
- on_finish
-
finished child process callback.
- on_error
-
fork error callback.
- on_enqueue
-
If push to start up child process queue, this callback is called.
- on_dequeue
-
If shift from start up child process queue, this callback is called.
- on_working_max
-
If request to start up child process and process count equal max process count, this callback is called.
Example
my $pm = AnyEvent::ForkManager->new( max_workers => 2, ## default 10 on_finish => sub { ## optional my($pid, $status, @anyargs) = @_; ## this callback call when finished child process.(like AnyEvent->child) }, on_error => sub { ## optional my($pm, @anyargs) = @_; ## this callback call when fork failed. }, );
start
start child process.
- args
-
arguments passed to the callback function of the child process.
- cb
-
run on child process callback.
Example
$pm->start( cb => sub { ## optional my($pm, $job_id) = @_; ## this callback call in child process. }, args => [$job_id],## this arguments passed to the callback function );
wait_all_children
You can call this method to wait for all the processes which have been forked. This can wait with blocking or wait with non-blocking in event loop of AnyEvent. feature to wait with blocking is ALPHA quality till the version hits v1.0.0. Things might be broken.
- blocking
-
If this parameter is true, blocking wait enable. (default: false) feature to wait with blocking is ALPHA quality till the version hits v1.0.0. Things might be broken.
- cb
-
finished all the processes callback.
Example
$pm->wait_all_children( cb => sub { ## optional my($pm) = @_; ## this callback call when finished all child process. }, );
signal_all_children
Sends signal to all worker processes. Only usable from manager process.
on_error
As a new method's argument.
on_start
As a new method's argument.
on_finish
As a new method's argument.
on_enqueue
As a new method's argument.
on_dequeue
As a new method's argument.
on_working_max
As a new method's argument.
DEPENDENCIES
Perl 5.8.1 or later.
BUGS
All complex software has bugs lurking in it, and this module is no exception. If you find a bug please either email me, or add the bug to cpan-RT.
SEE ALSO
AnyEvent AnyEvent::Util Parallel::ForkManager Parallel::Prefork
AUTHOR
Kenta Sato <karupa@cpan.org>
LICENSE AND COPYRIGHT
Copyright (c) 2012, Kenta Sato. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Module Install Instructions
To install AnyEvent::ForkManager, copy and paste the appropriate command in to your terminal.
cpanm AnyEvent::ForkManager
perl -MCPAN -e shell install AnyEvent::ForkManager
For more information on module installation, please visit the detailed CPAN module installation guide.