2012-11-03 18 views
3

考慮一個示例代碼ř的foreach:線程數減少到1

library("foreach") 

library("doMC") 

library("multicore") 

multicore:::detectCores() 

registerDoMC(cores=6) 

alpha <- foreach(i = 1:10) %dopar% { 
    ... 
} 

當我使用頂部,在啓動的線程的數量是說6.工作的每個線程的量是巨大的。但是,線程的數量迅速下降到5,4,3,2,然後是1.我從那時起就猜測執行是串行的。我不明白爲什麼?

乾杯

+0

你可以在你的'%dopar%'表達式中發佈代碼,或者至少提供一個可重現的例子嗎? – BenBarnes

+0

另外,如果您將6個進程中的大量數據返回給主進程,則會導致大量的並行執行開銷。 – BenBarnes

回答

0

我不認爲當你有串行任務的線程的數量減少了,但同樣的線程將被等待。看來有些線程已經完成了你的情況。

+0

我想通了。每個線程的工作量是不相等的。代碼中不明顯。只有在分別計算每個循環迭代之後才實現它。謝謝。 – Adi

+0

@Adi所以答案被接受? – Ali