所以,讓我們致電iter
您可以動態地設置爲不同進程
「的事情你迭代次數」
腳本的並行化可能是這個樣子
if(length(iter)==1){
Result <- #some function
} else {
cl <- makeCluster(iter)
registerDoParallel(cl)
Result <- foreach(z=1:iter) %dopar% {
# some function
}
stopCluster(cl)
}
這裏如果iter
爲1它不會調用並行操作,否則會根據iter
的數量動態分配內核。請注意,如果您打算將其嵌入函數中,則不能在函數內調用makeCluster
和registerDoParallel
,您必須將它們設置在函數外部。
或者,您可以像有節點一樣註冊許多羣集,動態運行foreach
並且未使用的羣集將保持空閒狀態。
編輯:如果您只有一個操作來遍歷,最好運行NOT並行運行。如果只是爲了避免由makeCluster()
,registerDoParallel()
和stopCluster()
產生的額外時間。但與一名工人並行相比,這種差異會很小。修改上面的代碼,添加條件來屏蔽只有一個工人的情況。如果您需要進一步的幫助,請提供反饋信息。
我編輯了OP –
回覆編輯相應 – JustGettinStarted
如果您對答案滿意,請點擊勾號來標記此問題現在已關閉 – JustGettinStarted