programing

병렬을 제한하려면 어떻게 해야 합니까?각자?

kakaobank 2023. 5. 17. 23:19
반응형

병렬을 제한하려면 어떻게 해야 합니까?각자?

평행선이 있어요.일부 웹 페이지를 다운로드하는 각() 비동기 루프의 경우.대역폭이 제한되어 있어 한 번에 x페이지만 다운로드할 수 있지만 병렬은 다운로드할 수 없습니다.각 사용자는 원하는 웹 페이지의 전체 목록을 실행합니다.

Parallel을 실행하는 동안 스레드 번호 또는 기타 제한 장치를 제한할 수 있는 방법이 있습니까?각자?

데모 코드:

Parallel.ForEach(listOfWebpages, webpage => {
  Download(webpage);
});

실제 작업은 웹 페이지와 관련이 없으므로 창의적인 웹 크롤링 솔루션은 도움이 되지 않습니다.

다음을 지정할 수 있습니다.MaxDegreeOfParallelism순식간에ParallelOptions매개변수:

Parallel.ForEach(
    listOfWebpages,
    new ParallelOptions { MaxDegreeOfParallelism = 4 },
    webpage => { Download(webpage); }
);

MSDN: 병렬입니다.각각

MSDN: 병렬 옵션.최대 병렬 처리 수준

병렬 옵션을 사용하고 최대 병렬도를 설정하여 동시 스레드 수를 제한할 수 있습니다.

Parallel.ForEach(
    listOfwebpages, 
    new ParallelOptions{MaxDegreeOfParallelism=2}, 
    webpage => {Download(webpage);});     

다른 오버로드 사용Parallel.Foreach그것은 예를 들어, 그리고 설정.MaxDegreeOfParallelism병렬로 실행되는 인스턴스 수를 제한합니다.

그리고 VB.net 사용자들에게는 (검색이 이상하고 찾기가 어렵습니다)...

Parallel.ForEach(listOfWebpages, New ParallelOptions() With {.MaxDegreeOfParallelism = 8}, Sub(webpage)
......end sub)  

언급URL : https://stackoverflow.com/questions/9290498/how-can-i-limit-parallel-foreach

반응형