Il peut être intéressant, afin d’optimiser le temps de traitement de tâches n’ayant pas un impact lourd sur les ressources du PC, de les lancer en parallèle.
Le langage de script de Microsoft – PowerShell – permet de réaliser cela très facilement.
Considérons, la séquence de code simple :
$ScriptBlock
= {
param($display)
Write-Host
$display
Start-Sleep 5
}
Ce code reçoit en paramètre une chaine de caractère ; laquelle est affichée à l’écran puis après 5 secondes, l’exécution est terminée.
Nous allons lancer cette séquence 10 fois – en parallèle. Chaque tâche affichera un message différent.
Write-Host
“== Lancement des tâches”
for ($i=1; $i
-le 10; $i++)
{
Start-Job
$ScriptBlock
-ArgumentList
“Message$i”
}
Ensuite nous allons attendre la fin de l’exécution de toutes ces tâches.
Write-Host
“== Attente de la fin des tâches”
While (Get-Job
-State
“Running”)
{
Start-Sleep 5
}
Une fois toutes les tâches terminées, on peut récupérer les messages affichés par celles-ci.
Write-Host
“==Affichage du résultat des tâches”
Get-Job | Receive-Job
Finalement, on purge les tâches du contexte d’exécution.
Write-Host
“== Nettoyage des tâches”
Remove-Job
*
Ce petit programme affichera les messages ci-dessous lors de son exécution.
== Lancement des tâches
Id Name State HasMoreData Location Command
— —- —– ———– ——– ——-
61 Job61 Running True localhost …
63 Job63 Running True localhost …
65 Job65 Running True localhost …
67 Job67 Running True localhost …
69 Job69 Running True localhost …
71 Job71 Running True localhost …
73 Job73 Running True localhost …
75 Job75 Running True localhost …
77 Job77 Running True localhost …
79 Job79 Running True localhost …
== Attente de la fin des tâches
==Affichage du résultat des tâches
Message10
Message9
Message8
Message7
Message6
Message5
Message4
Message3
Message2
Message1
== Nettoyage des tâches