Parallel::Queue::Manager - dispatching object for Parallel::Queue.
# Note: examples of the options for passing in a # queue via new, runqueue, and assignment # are shown in t/1?-runqueue*.t. # arguments are the same as Parallel::Queue, # other than 'export' is unnecessary as it # is a method. use Parallel::Queue::Manager; # whatever you use for squishification. use MyFile::Squash qw( squish ); # the input queue is a list of arguments # to the $handler. # # in this case the queue is a list of >8KB # files that need to be squashed. my @pathz = grep { -s > 8192 } glob $glob; # the handler takes a queue entry as argument # and returns a subref. in this case, it gets # file path and bundles it into a subref calling # squish. my $handler = sub { my $path = shift; sub { squish $path } }; # the queue can be passed as an argument to new # for one-stop shopping. Parallel::Queue::Manager ->new( $handler, @pathz ) ->configure( qw( verbose finish ) ) ->runqueue( $job_count, @pathz ); # to simplify re-using the $qmgr object, # jobs can be passed to runqueue also. # # in this case the job count can depend # on whether the queued jobs are expensive # to process or not (e.g., gzip vs. xz -T0). my $qmgr = Parallel::Queue::Manager ->new( $handler ) ->configure( qw( finish ); my @queue = map { my $task = $_; my $job = is_big_task( $_ ) ? 1 : 32 ; [ $job, $task ] } generate_jobs; $qmgr->runqueue( @$_ ) for @queue; # the "queue" and "handler" methods provide # access to the queue elements as lvalues. my $qmgr = Parallel::Queue::Manager->new(); for( @tasks ) { my( $handler, $queue ) = @$_; $qmgr->handler = $handler; $qmgr->runqueue( $jobs => @$queue ); my $sanity = $qmgr->queue; say join "\n\t" => 'Unfinished business:', @$sanity if @$sanity; }
To install Parallel::Queue, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Parallel::Queue
CPAN shell
perl -MCPAN -e shell install Parallel::Queue
For more information on module installation, please visit the detailed CPAN module installation guide.