In meiner Diplomarbeit muss ich eine Menge Simulationsstudien durchführen, was ziemlich lange dauert. Mein Computer hat 4 Kerne, also habe ich mich gefragt, ob es möglich ist, zum Beispiel zwei R-Skripte in Rstudio gleichzeitig zu benutzen, indem man sie zwei verschiedene Kerne benutzen lässt? Wenn dies möglich wäre, könnte ich eine Menge Zeit sparen, indem ich den Computer über Nacht lasse und alle diese Skripte laufen lasse.Mehrere R-Skripte gleichzeitig ausführen
Antwort
Unter der Annahme, dass die Ergebnisse müssen nicht in der gleichen Umgebung landen, können Sie erreichen dies RStudio Projekte mit: https://support.rstudio.com/hc/en-us/articles/200526207-Using-Projects
ersten zwei separate Projekte erstellen. Sie können beide gleichzeitig öffnen, was zu zwei Sitzungen führt. Sie können dann jedes Skript in jedem Projekt öffnen und jedes einzeln ausführen. Auf Ihrem Betriebssystem verwalten Sie dann die Kernzuweisung.
Sie Multi-Core-Parallelität erreichen können (wie hier https://cran.r-project.org/web/packages/doMC/vignettes/gettingstartedMC.pdf erklärt) in der gleichen Sitzung mit dem folgenden Code
if(Sys.info()["sysname"]=="Windows"){
library(doParallel)
cl<-makeCluster(numberOfCores)
registerDoParallel(cl)
}else{
library(doMC)
registerDoMC(numberOfCores)
}
library(foreach)
someList<-list("file1","file2")
returnComputation <-
foreach(x=someList) %dopar%{
source(x)
}
if(Sys.info()["sysname"]=="Windows") stopCluster(cl)
Sie Ihre Ausgabe müssen noch angepasst werden.
Leider scheint dies auf Windows nicht unterstützt zu werden (gemäß den zitierten Dokumenten). – mrjoseph
Wenn Sie mit der rechten Maustaste auf RStudio klicken, sollten Sie mehrere separate "Sitzungen" von RStudio öffnen können (unabhängig davon, ob Sie Projekte verwenden). Standardmäßig werden diese jeweils 1 Kern verwendet. Wenn jedoch mehrere Skripte, die Sie ohne Fehler laufen wissen, würde ich empfehlen, diese auf verschiedene Parameter über die Befehlszeile ausgeführt wird:
RCMD script.R
RScript script.R
Laufen im Hintergrund:
nohup Rscript script.R &
Here "& "führt das Skript im Hintergrund aus (es kann mit fg
abgerufen werden, überwacht mit htop
, und getötet mit kill <pid>
oder pkill rsession
) und nohup
speichert die Ausgabe in einer Datei und läuft weiter, wenn das Terminal geschlossen ist.
Passing Argumente zu einem Skript:
Rscript script.R 1 2 3
Diese c(1, 2, 3)
bis R als Ausgang des commandArgs()
so eine Schleife in bash passieren mehrere Instanzen von Rscript mit einem schlag Schleife laufen kann:
for ii in 1 2 3
do
nohup Rscript script.R $ii &
done
Paralleler Code ausführen (innerhalb von R):
Sie werden oft feststellen, dass ein bestimmter Schritt in Ihrem R-Skript die Berechnungen verlangsamt, kann ich vorschlagen Parallelen Code in Ihrem R-Code ausführen, anstatt sie separat auszuführen? Ich würde die snow package für die Ausführung von Schleifen parallel in R. Im Allgemeinen statt Verwendung empfehlen:
cl <- makeCluster(n)
# n = number of cores (I'd recommend one less than machine capacity)
clusterExport(list=ls()) #export input data to all cores
output_list <- parLapply(cl, input_list, function(x) ...)
stopCluster() # close cluster when complete (particularly on shared machines)
verwendet überall würden Sie normalerweise eine lapply
Funktion in R verwenden sie parallel laufen zu lassen.
- 1. Mehrere Tensorflow-Sitzungen gleichzeitig ausführen
- 2. Mehrere Unittest-Testdateien gleichzeitig ausführen
- 3. eclipse: Mehrere Startkonfigurationen gleichzeitig ausführen
- 4. Mehrere Threads gleichzeitig in Java ausführen
- 5. Mehrere SQL-Anweisungen gleichzeitig in PHP ausführen?
- 6. Python - Code gleichzeitig ausführen
- 7. 2 Threads gleichzeitig ausführen
- 8. mehr Funktionen gleichzeitig ausführen
- 9. Von Eclipse, wie kann ich mehrere Android-Laufbefehle gleichzeitig ausführen?
- 10. Mehrere REST-API-Abfragen für einzelne Seiten gleichzeitig ausführen
- 11. Mehrere Spring-Batch-Jobs gleichzeitig mit verschiedenen Parametern ausführen
- 12. Wie kann man mehrere Tests gleichzeitig mit jBehave ausführen?
- 13. Kann VMware PLayer Workstation (kostenlos) mehrere VMs gleichzeitig ausführen?
- 14. Mehrere Listenfelder gleichzeitig scrollen?
- 15. Mehrere Indizes gleichzeitig erstellen
- 16. Mehrere Geste Responder gleichzeitig
- 17. Mehrere Eventlistener gleichzeitig hinzufügen
- 18. Mehrere Tasten gleichzeitig drücken
- 19. Mehrere Ganzzahlen gleichzeitig drucken
- 20. Tomcat mehrere Instanzen gleichzeitig
- 21. Mehrere Lösungsplattformen gleichzeitig erstellen?
- 22. Mehrere Junit-Testfälle gleichzeitig
- 23. VIM: Speichern und gleichzeitig ausführen?
- 24. Laravel: Cron Job-Aufgaben gleichzeitig ausführen
- 25. Mehrere Maschinen - mehrere Dateien gleichzeitig verarbeiten?
- 26. Wie kann ich mehrere Szenarien gleichzeitig ausführen, ohne mehrere Thread-Gruppen zu verwenden?
- 27. Unterstützt Apache Drill mehrere Abfragen gleichzeitig?
- 28. mongodb führen mehrere Abfragen gleichzeitig aus
- 29. Mehrere Emacs-Infodateien gleichzeitig lesen
- 30. Django Mehrere Attribute gleichzeitig rendern?
Ich denke, es gibt Antwort auf solche Frage [Link] (http://StackOverflow.com/Questions/10835122/Multithreading-with-r/10835234), oder dort [Link] (http://StackOverflow.com/ Fragen/18377870/running-jobs-in-background-in-r) – Batanichek
Sie können mehrere R-Sitzungen einrichten und Ihre Skripts pro Sitzung ausführen. – Hav0k