savez-vous s'il existe un moyen simple d'exécuter la commande FOR dans un fichier de commandes sur plusieurs threads? Quel est l'intérêt d'avoir 4 cœurs si je ne peux pas exécuter mes tâches dans 4 threads parallèles?
Par exemple, si j'optimise les PNG avec PNGOUT, la commande que j'utiliserais est
for %i in (*.png) do pngout "%i"
Mais il s’agit là d’une tâche hautement paralisable dans laquelle les sous-tâches ne dépendent pas les unes des autres.
Pour exécuter ceci en 4 'files d'attente' j'écrirais quelque chose comme
for -thread 4 %i in (*.png) do pngout "%i"
Dois-je écrire ma propre application semblable à celle qui pourrait le faire ou existe-t-il une solution gratuite disponible?
batch
automation
Axarydax
la source
la source
Réponses:
J'ai écrit un fichier de commandes qui n'exécute qu'un nombre maximal de commandes il y a quelque temps sur Stack Overflow: Exécution parallèle de processus de shell :
la source
find /c /v ""
.Les fichiers batch sont destinés à des scripts extrêmement basiques et ne prennent en charge aucun type de multithreading. Vous devrez écrire votre propre utilitaire pour faire ce que vous voulez accomplir.
Sinon, Windows PowerShell peut fournir plus de fonctionnalités pour vous rapprocher de votre objectif.
Si vous voulez simplement exécuter plusieurs opérations en même temps, vous pouvez utiliser la commande start pour lancer l'utilitaire PNGOUT dans une nouvelle fenêtre. La boucle FOR continuera alors sans attendre que chaque opération se termine.
La ligne modifiée ressemblerait à ceci:
Cependant, notez que ceci lancera effectivement PNGOUT pour TOUS les fichiers du répertoire en même temps, ce qui n’est probablement pas souhaitable.
la source