41 votes

Est-il possible de limiter les cœurs pour Parallel.ForEach?

J'utilise un Parallel.ForEach dans mon code. Tous mes 8 cœurs vont à 100%. C'est mauvais pour les autres applications en cours d'exécution sur le serveur. Est-il possible de limiter l'exécution à 4 cœurs?

42voto

Florian Greinacher Points 6769

Passez une instance de ParallelOptions avec ParallelOptions.MaxDegreeOfParallelism défini sur 4 à Parallel.ForEach .

Néanmoins, cela pourrait ne pas avoir de sens sur d’autres machines, qui pourraient avoir plus ou moins de cœurs que vous. En général, vous devriez laisser le cadre décider du degré de parallélisme.

26voto

Jon Skeet Points 692016

Vous pouvez transmettre un ParallelOptions avec la propriété MaxDegreeOfParallelism définie sur 4.

13voto

fubo Points 647

C'est comme ça que je le fais:

        ParallelOptions pOptions = new ParallelOptions();
       pOptions.MaxDegreeOfParallelism = 4;
       Parallel.ForEach<int>(IntList, pOptions, ListItem=>
       {
           // do someting
       });
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X