#r #loops #parallel-processing #parallel.foreach
#r #петли #параллельная обработка #параллельно.для каждого
Вопрос:
У меня есть функция, которая просматривает таблицу, содержащую URL-адрес данных для загрузки и имена, которые будут присвоены загруженному файлу.
Я пытаюсь заставить следующий код работать параллельно — так, чтобы файлы загружались параллельно, а не последовательно, — однако, когда код запускается, кажется, что он выполняет последнее. Я был бы очень признателен за любую помощь в определении того, в чем проблема!
library(foreach) library(doParallel) ### Setup parallel backend to use many processors ### cores=detectCores() cl lt;- makeCluster(cores[1]-1) #not to overload your computer registerDoParallel(cl) ### The Loop ### foreach(i = 3:200, (nrow(Df))) %dopar% { URLlt;- print(Df$Url[i]) FNlt;- print(Df$FileNames[i]) LOCALlt;-file.path("Users/anon/desktop/books", paste(FN, ".mp4", sep="")) download.file(URL, LOCAL, mode="wb") }
Комментарии:
1. Что
detectCores()
возвращается? Сколько у вас ядер?2. Привет, у меня 8 ядер
3. Можете ли вы опубликовать примеры данных? Пожалуйста, отредактируйте вопрос с выводом
dput(Df)
. Или, если он слишком велик с выходомdput(head(Df, 20))
.4. Кроме того, вам не нужны эти