Как сделать параллельную обработку в R с пустым результатом? - PullRequest
0 голосов
/ 30 октября 2018

Я бы хотел сделать параллельную обработку в R, используя пакеты 'doParallel' и 'foreach'. И идея состоит в том, чтобы делать параллельные вычисления только без каких-либо результатов. То, что я нашел, выглядит как оператор «foreach» всегда возвращает какой-то результат, который занимает память в ОЗУ. Поэтому мне нужна помощь, чтобы получить пустой результат для параллельных циклов обработки.

# 1. Packages
library(doParallel)
library(foreach)

# 2. Create and run app cluster
cluster_app <- makeCluster(detectCores())
registerDoParallel(cluster_app)

# 3. Loop with result
list_i <- foreach(i = 1:100) %dopar% {
  print(i)
}

# 4. List is not empty
list_i

# 5. How make loop with empty 'list_i' ?
# TODO: make 'list' equal NULL or NA

# 6. Stop app cluster
stopCluster(cluster_app)

1 Ответ

0 голосов
/ 31 октября 2018

Вот решение, которое я нашел:

# 1. Packages
library(doParallel)
library(foreach)

# 2. Create and run app cluster
cluster_app <- makeCluster(detectCores())
registerDoParallel(cluster_app)

# 3. Loop with result
list_i <- foreach(i = 1:100) %dopar% {
  print(i)
}

list_i

# 4. Mock data processing
mock_data <- function(x) {
  data.frame(matrix(NA, nrow = x, ncol = x))
}

# 4. How make loop with empty 'list_i' ?
foreach(i = 1:10, .combine = 'c') %dopar% {

  # 1. Calculations
  mock_data(x)

  # 2. Result
  NULL
}

# The results has only one value 'NULL' (not a data set)
list_i


# 5. Stop app cluster
stopCluster(cluster_app)
...