Je veux traiter de nombreux fichiers et comme j'ai ici plusieurs cœurs, je veux le faire en parallèle :
for i in *.mesfichiers; faire faire_quelque_chose $i `paramètres_dérivés $i` autres_paramètres; fait
Je connais une solution avec un Makefile, mais mes commandes ont besoin des arguments de la liste de globbing shell. Ce que j'ai trouvé est :
> function pwait() {
> while [ $(jobs -p | wc -l) -ge $1 ]; faire
> dormir 1
> faire
>}
>
Pour l'utiliser, il suffit de mettre & après les jobs et un appel à pwait, le paramètre donne le nombre de processus parallèles :
for i in *; faire faire_quelque_chose $i & pwait 10 fait
Mais cela ne fonctionne pas très bien, par exemple j'ai essayé avec une boucle for convertissant de nombreux fichiers mais cela m'a donné une erreur et laissé des tâches inachevées.
Je ne peux pas croire que cela n'ait pas déjà été fait étant donné que la discussion sur la liste de diffusion de zsh est si ancienne maintenant. Alors, connaissez-vous une meilleure solution ?