- Kerlinux.org - http://kerlinux.org -
Parallélisation facile en Perl
Posted By SLiX On 21 avril 2010 @ 15 h 44 min In Informatique | 2 Comments
Comment paralléliser facilement des traitements en utilisant Perl ?
Il suffit d’utiliser le module « Parallel::ForkManager ». Celui-ci créé des processus qui traitent indépendamment les itérations d’une boucle, tout en restant limité au nombre de processus spécifié.
Ce module est disponible dans Debian GNU/Linux et dérivées (Ubuntu, …) sous le nom libparallel-forkmanager-perl:
Installation:
# apt-get install libparallel-forkmanager-perl
Voici un petit exemple d’utilisation, permettant de paralléliser le redimensionnement d’images (pensez à installer imageMagick is vous voulez tester cet exemple):
#!/usr/bin/perl -w use strict; use warnings; use Parallel::ForkManager; my $size = "1024"; my $max_process = 4; my $filter = "lanczos"; my $pm = new Parallel::ForkManager($max_process); my $resized; foreach my $image (@ARGV) { # Fork my $pid = $pm->start and next; # Début du traitement # Construction du nom de l'image redimensionnée # image.jpg -> image-size.jpg ( $resized = $image ) =~ s/.(w+)$/-$size.$1/; # Redimensionnement system("convert -resize $size -filter $filter "$image" "$resized"" ); # Affiche des points de progression... print '.'; # Fin du traitement $pm->finish; } # Attente de tous les sous-processus avant de continuer $pm->wait_all_children; print "done\n"; exit 0;
Une présentation un peu plus approfondie:
Article printed from Kerlinux.org: http://kerlinux.org
URL to article: http://kerlinux.org/2010/04/parallelisation-facile-en-perl/
URLs in this post:
[1] http://www.perlmonks.org/?node_id=291446: http://www.perlmonks.org/?node_id=291446
Click here to print.
Copyright © 2010 Kerlinux.org. Tous droits réservés.