En effet, il permet après avoir rapidement parcouru la documentation en ligne de paralléliser l'exécution d'une commande Shell même si elle est un peu complexe.
Une petite démonstration vous permettra de rapidement vous en rendre compte :)
Voici donc la commande shell que je désirais paralléliser :
for id in $(seq 1 4)
do
for cf in t1 x34 j25 r32 r77
do
cat /data/d${id}/res/${cf}.csv | encb64 > /data/d${id}/res/${cf}-bs64.csv
done
done
A priori ça semble un peu compliqué mais en fait Parallel supporte l'initialisation de listes pour justement mimer les boucles for. Ainsi la commande devient la suivante :
parallel cat /data/pns{1}/results/{2}.csv '|' encb64 '>' /data/pns{1}/results/{2}-bs64.csv ::: 1 2 3 4 ::: t1 x34 j25 r32 r77
Vous noterez qu'il est nécessaire de mettre entre quotes les caractères pouvant être interprétés par le shell comme dans mon exemple le caractère pipe.
Par défaut Parallel lancera autant de processus que de coeurs disponibles sur la machine. il est aussi possible de paralléliser des tâches sur plusieurs machines.
Concernant l'installation de l'outil, vous pouvez la faire très simplement avec le Homebrew de Mac ou en téléchargeant le paquet disponible pour votre distribution. Par exemple, pour ubuntu 10.04 vous pouvez le récupérer ici.
Aucun commentaire:
Enregistrer un commentaire