Gleichzeitige Aufgaben in Parallel.ForEach() mit Ressourcenbeschränkungen verwalten
Beim Arbeiten mit parallelen Schleifen, bei denen die einzelnen Vorgänge Ressourcenbeschränkungen unterliegen (z. B. Netzwerkbandbreite oder API-Ratenbeschränkungen), ist die Kontrolle des Parallelitätsgrads von entscheidender Bedeutung. Die Parallel.ForEach()
-Methode bietet in Verbindung mit der ParallelOptions
-Klasse eine unkomplizierte Lösung.
Die Klasse ParallelOptions
stellt die Eigenschaft MaxDegreeOfParallelism
bereit, die die maximale Anzahl von Threads festlegt, die gleichzeitig ausgeführt werden dürfen. Dies begrenzt effektiv die Anzahl gleichzeitiger Vorgänge und verhindert so eine Ressourcenüberlastung.
Stellen Sie sich ein Web-Scraping-Szenario vor, bei dem die Netzwerkbandbreite gleichzeitige Downloads auf beispielsweise vier gleichzeitig beschränkt. Der folgende Codeausschnitt zeigt, wie diese Einschränkung durchgesetzt wird:
<code class="language-csharp">Parallel.ForEach( listOfWebpages, new ParallelOptions { MaxDegreeOfParallelism = 4 }, webpage => { DownloadWebpage(webpage); } );</code>
Durch die Einstellung von MaxDegreeOfParallelism
auf 4 wird sichergestellt, dass maximal vier Threads gleichzeitig Webseiten herunterladen, wodurch die Bandbreitenbeschränkung respektiert wird.
Weiterführende Literatur:
Das obige ist der detaillierte Inhalt vonWie kann die Parallelität in Parallel.ForEach() für gedrosselte Vorgänge eingeschränkt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!