У меня работает длинный код, где в какой-то момент я регистрирую кластер из нескольких узлов и использую parApply.Время, необходимое для выполнения этого параллельного вычисления внутри кода, используя system.time
, сохраните его в переменной и посмотрите на него после завершения кода.Давайте назовем его CalculationTimeInsideCode.
Когда я сохраняю фреймы данных и вычисляю тот же фрагмент кода вне кода (без перезапуска R или освобождения памяти!) - т.е. все еще параллельно, но беря только необходимые строки изкод для выполнения этой части - та же самая строка занимает примерно 1/50 от той, что была вне кода (давайте назовем его CalculationTimeOutsideCode).
Это связано с другими переменными, занимающими память во время выполнения кода, которые нене существует больше вне кода?
Команда, которую я использую для синхронизации (в обоих случаях):
system.time({result <- parLapply(cl, df , fun = SomeFunction)})
, где cl
- зарегистрированный кластер.