rm(list=ls())
mat<-data.frame(matrix(NA,32,11))
mat[c(1,11,21),]<-mtcars[c(1,11,21),]
tasks <- list(
job1 = function(){repeat{na<-which(is.na(mat1[,1]));mat1[na,]=mat1[na-1,];if(all(is.na(mat1[,1])==F)==T)break}mat1},
job2 = function(){repeat{na<-which(is.na(mat2[,1]));mat2[na,]=mat2[na-1,];if(all(is.na(mat2[,1])==F)==T)break}mat2},
job3 = function()repeat{na<-which(is.na(mat3[,1]));mat3[na,]=mat3[na-1,];if(all(is.na(mat3[,1])==F)==T)break}mat3},
# To check that the computations are indeed running in parallel.
job4 = function() for (i in 1:5) { cat("4"); Sys.sleep(1) },
job5 = function() for (i in 1:5) { cat("5"); Sys.sleep(1) },
job6 = function() for (i in 1:5) { cat("6"); Sys.sleep(1) }
)
mat<-data.frame(matrix(NA,32,11))
mat[c(1,11,16),]<-mtcars[c(1,11,21),]
mat1<-mat[1:10,]
mat2<-mat[11:15,]
mat3<-mat[16:32,]
cl <- makeCluster(length(tasks))
clusterExport(cl, list("mat1","mat2","mat3")) # make sure mtcars is loaded
out <- clusterApply(cl, tasks, function(f) f())
stopCluster(cl)
0
A
回答
0
試試這個:
cl <- makeCluster(length(tasks))
clusterExport(cl, "mat")
out <- clusterApply(cl, tasks,function(f) f())
你需要做的對象提供給工作進程。這由clusterExport
完成。
此外,請注意您的功能有點奇怪。在每個工作進程中完成相同的任務,這可能不是你打算做的。請注意,簡單地寫mat[1:10]
只是打印相應的輸出,沒有別的。嘗試以下
job1 = function() {
mat <- mat[1:10, ]; # note the difference here
repeat{
na<-is.na(mat[,1]);
mat[na,] <-mtcars[na,];
if(all(is.na(mat[,1]))==F) break}
}
對其他工作做類似的調整。然後調用
cl <- makeCluster(length(tasks))
clusterExport(cl, list("mat", "mtcars")) # make sure mtcars is loaded
out <- clusterApply(cl, tasks, function(f) f())
stopCluster(cl)
這是仍有小幅低效率的,因爲你是整個矩陣輸出到每個工作進程,然後只使用一個子集。但我想這個原理是可以理解的。
相關問題
- 1. 如何同時運行多個「任務」?
- 2. 在crontab中同時運行多個任務沒有延遲
- 3. 任務不同時運行
- 4. 在r中同時運行多個作業(並行)
- 5. 運行多個任務
- 6. 運行多個任務
- 7. 運行多個rake任務
- 8. 在R的不同線程/任務中運行不同的函數R
- 9. 任務調度程序可以同時運行多少個任務
- 10. 使用pyspark的Celery任務的Flask API不能同時運行多個任務
- 11. BackgroundWorker當前正忙,無法同時運行多個任務
- 12. C#以不同的時間間隔運行多個任務
- 13. grunt.js:可以同時運行多個npm任務嗎?
- 14. 如何安全地同時運行多個任務?
- 15. ffmpeg在一個進程中同時執行多個任務ID
- 16. 在Java中同時運行兩個任務
- 17. 如何在同一事務中並行運行多個數據流任務?
- 18. Plesk計劃任務 - 運行多個腳本與多個任務
- 19. 如何在android中同時運行多個服務而沒有任何衝突?
- 20. 在不同線程中運行任務
- 21. 與NAnt並行運行多個任務
- 22. 並行運行多個地圖任務
- 23. 如何在兩個不同的會話中同時並行運行相同的計劃任務並行運行?
- 24. Laravel:同時運行cron作業任務
- 25. C#:使任務同時運行
- 26. 限制同時運行的任務數
- 27. 在SBT中多次運行任務
- 28. 如何在PostgreSQL中同時運行多個事務
- 29. 同時運行多個類?
- 30. 運行多個Asyntasks同時
可否請您提供適合上述任務的語法。 – 789372u