Je veux traiter de nombreux fichiers et comme j'ai ici un tas de cœurs, je veux le faire en parallèle:
for i in *.myfiles; do do_something $i `derived_params $i` other_params; done
Je connais une solution Makefile mais mes commandes ont besoin des arguments de la liste de globbing du shell. Ce que j'ai trouvé c'est:
> function pwait() {
> while [ $(jobs -p | wc -l) -ge $1 ]; do
> sleep 1
> done
> }
>
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 *; do
> do_something $i &
> pwait 10
> done
Mais cela ne fonctionne pas très bien, par exemple, je l'ai essayé avec par exemple une boucle for pour convertir de nombreux fichiers mais en me donnant des erreurs et des travaux non effectués.
Je ne peux pas croire que cela ne soit pas encore fait car la discussion sur la liste de diffusion zsh est si ancienne maintenant. Alors tu sais mieux?
echo "DONE"
après la boucle qui a été exécutée avant que les travaux actifs ne soient terminés. => Cela m'a fait penser que le travail n'était pas fait.