For Each Element…End Statement (FPScript)

09.03.2021

Répète une série d'instructions pour tous les éléments d'une liste.

Syntaxe

[Parallel] For Each Element Counter In List Do

   [Statements]

End

La syntaxe de l'instruction For Each Element...End se compose des éléments suivants :

Élément

Description

Compteur

Variable qui est utilisée comme compteur de boucle. Il n'est pas nécessaire de déclarer le compteur de boucle avec Dim.

Liste

La liste avec les éléments à compter.

Déclarations

Une ou plusieurs instructions qui sont exécutées pour chaque élément de la liste.

Remarques

Le bloc For Each Element est exécuté s'il y a au moins un élément dans la liste. Dans ce cas, le programme exécute toutes les instructions de la boucle dont le compteur est égal à zéro. La boucle est répétée pour tous les éléments de List, où Counter adopte les valeurs de zéro jusqu'au nombre d'éléments moins un. Le programme quitte alors la boucle et poursuit l'exécution avec l'instruction qui suit l'instruction End.

Vous pouvez modifier la valeur de Counter à l'intérieur d'une boucle, mais cela rend la compréhension et les tests du code plus difficiles. Counter est fréquemment utilisé dans la boucle pour indexer un élément de la liste.

Si vous ajoutez le mot clé Parallel, le nombre d'itérations dans FlexPro Professional et Developer Suite s'effectuera de manière simultanée et non consécutive. FlexPro allouera ensuite l'exécution au plus grand nombre de threads simultanés en fonction du nombre de cœurs de processeur disponibles. Il en résulte une multiplication correspondante de la vitesse de traitement, pour autant qu'elle ne soit pas limitée par d'autres facteurs tels que le rechargement de grands ensembles de données à partir du disque dur.

Veuillez noter qu'il y a certaines conséquences lors de l'exécution simultanée :

Pour le compteur de boucle et la variable locale, que vous déclarez à l'intérieur du bloc Parallel For Each Element, une instance indépendante est créée pour chaque thread. L'accès à ce type de variable depuis l'extérieur du bloc n'est pas autorisé.

Une variable locale que vous déclarez au-dessus du bloc Parallel For Each Element est utilisée conjointement par tous les threads. Si vous sélectionnez l'accès en écriture à ce type de variable dans le bloc, sa valeur sera immédiatement modifiée pour tous les autres threads également.

L'ordre du nombre d'itérations étant indéfini, des concepts tels que la collecte de résultats individuels ne peuvent être utilisés avec l'opérateur de regroupement. Il est préférable de dimensionner suffisamment le résultat avant la boucle, puis de saisir les résultats individuels à l'aide de l'affectation indexée.

L'instruction Break n'est pas autorisée dans une boucle parallèle.

Disponible dans

FlexPro View, Basic, Professional, Developer Suite

Exemple

L'exemple suivant fournit une liste avec les dérivés des signaux dans la liste qui est passée comme argument :

Arguments ArgList

Dim ResultList = List(ArgList, "Derivative")

Parallel For Each Element i In ArgList Do

    ListeRésultat. = Dérivée(ListeArg.)

End

Liste de résultats

Voir aussi

For Each Column...End Statement

For Each Row...End Statement

For Each Value...End Statement

Déclaration For...End

While...End Statement

Déclaration Do...While

Partager l’article ou envoyer par mail :

Vous serez probablement intéressé par les articles suivants :